我们从Python开源项目中,提取了以下50个代码示例,用于说明如何使用flask.copy_current_request_context()。
def test_greenlet_context_copying_api(self): app = flask.Flask(__name__) greenlets = [] @app.route('/') def index(): reqctx = flask._request_ctx_stack.top.copy() @flask.copy_current_request_context def g(): self.assert_true(flask.request) self.assert_equal(flask.current_app, app) self.assert_equal(flask.request.path, '/') self.assert_equal(flask.request.args['foo'], 'bar') return 42 greenlets.append(greenlet(g)) return 'Hello World!' rv = app.test_client().get('/?foo=bar') self.assert_equal(rv.data, b'Hello World!') result = greenlets[0].run() self.assert_equal(result, 42) # Disable test if we don't have greenlets available
def copy_current_request_context(f): """A helper function that decorates a function to retain the current request context. This is useful when working with greenlets. The moment the function is decorated a copy of the request context is created and then pushed when the function is called. Example:: import gevent from flask import copy_current_request_context @app.route('/') def index(): @copy_current_request_context def do_some_work(): # do some work here, it can access flask.request like you # would otherwise in the view function. ... gevent.spawn(do_some_work) return 'Regular response' .. versionadded:: 0.10 """ top = _request_ctx_stack.top if top is None: raise RuntimeError('This decorator can only be used at local scopes ' 'when a request context is on the stack. For instance within ' 'view functions.') reqctx = top.copy() def wrapper(*args, **kwargs): with reqctx: return f(*args, **kwargs) return update_wrapper(wrapper, f)
def _(*args): foo = copy_current_request_context(example.regress) eventlet.spawn(foo, *args)
def _(*args): foo = copy_current_request_context(example.mainviewx) eventlet.spawn(foo, *args)
def _(*args): foo = copy_current_request_context(example.mainviewz) eventlet.spawn(foo, *args)
def _(*args): foo = copy_current_request_context(example.mainviewy) eventlet.spawn(foo, *args)
def _(*args): foo = copy_current_request_context(example.regress2) eventlet.spawn(foo, *args)