Exemple #1
0
 def open(self, *args, **kwargs):
     if self.context_preserved:
         _request_ctx_stack.pop()
         self.context_preserved = False
     kwargs.setdefault('environ_overrides', {}) \
         ['flask._preserve_context'] = self.preserve_context
     old = _request_ctx_stack.top
     try:
         return Client.open(self, *args, **kwargs)
     finally:
         self.context_preserved = _request_ctx_stack.top is not old
    """
    An important caveat to this is that any operation relate to database must be MANUALLY committed, otherwise may result
    potential operation lost.
    """
    def future(*args, **kwargs):
        rv = _request_ctx_stack.push(
            request_ctx
        ) if not _request_ctx_stack.top and request_ctx else None
        result = None
        try:
            result = method(*args, **kwargs)
        except Exception, ex:
            raise ex
        finally:
            if rv:
                _request_ctx_stack.pop()
            try:
                db.session.remove()
            except Exception, ex:
                print ex
        if index is None:
            return result
        else:
            return dict(index=index, data=result)

    return future


def pool_executor(executor):
    if executor == CONCURRENT_EXECUTOR_THREAD:
        return futures.ThreadPoolExecutor
Exemple #3
0
 def __exit__(self, exc_type, exc_value, tb):
     self.preserve_context = False
     if self.context_preserved:
         _request_ctx_stack.pop()
Exemple #4
0
from flask.globals import _request_ctx_stack
from functools import partial


def _lookup_req_object(name):
    top = _request_ctx_stack.top
    if top is None:
        raise RuntimeError('没有')
    return getattr(top, name)


class foo(object):
    def __init__(self):
        self.xxx = 123
        self.kkk = 345


req = partial(_lookup_req_object, 'xxx')
XXX = partial(_lookup_req_object, 'kkk')

_request_ctx_stack.push(foo())

v1 = req()
print(v1)
v2 = XXX()
print(v2)

_request_ctx_stack.pop()  #移除