Пример #1
0
    def __call__(self, *args, **kwargs):

        # Get bound Task.__call__
        # http://stackoverflow.com/a/1015405/315168
        underlying = Task.__call__.__get__(self, Task)

        if self.request.is_eager:
            return self.exec_eager(*args, **kwargs)

        request = self.get_request()

        try:
            def handler(request):
                try:
                    return underlying(*args, **kwargs)
                except Exception as e:
                    logger.error("TransactionalTask task raised an exception %s", e)
                    logger.exception(e)
                    raise

            handler = tm_tween_factory(handler, request.registry)
            result = handler(request)
        finally:
            # TODO: Do we need closer?
            # pyramid_env["closer"]()
            pass

        return result
Пример #2
0
    def __call__(self, *args, **kwargs):

        # Get bound Task.__call__
        # http://stackoverflow.com/a/1015405/315168
        underlying = Task.__call__.__get__(self, Task)

        if self.request.is_eager:
            return self.exec_eager(*args, **kwargs)

        request = self.get_request()

        try:

            def handler(request):
                try:
                    return underlying(*args, **kwargs)
                except Exception as e:
                    logger.error(
                        "TransactionalTask task raised an exception %s", e)
                    logger.exception(e)
                    raise

            handler = tm_tween_factory(handler, request.registry)
            result = handler(request)
        finally:
            # TODO: Do we need closer?
            # pyramid_env["closer"]()
            pass

        return result
Пример #3
0
    def __call__(self, *args, **kwargs):

        pyramid_env = self.get_env()

        try:
            # Get bound Task.__call__
            # http://stackoverflow.com/a/1015405/315168

            # We need to pass RequesetAwareTask super() because of transaction tween injection
            underlying = Task.__call__.__get__(self, Task)

            def handler(request):
                try:
                    return underlying(request, *args, **kwargs)
                except Exception as e:
                    logger.error("TransactionalTask task raised an exception %s", e)
                    logger.exception(e)
                    raise

            handler = tm_tween_factory(handler, pyramid_env["registry"])
            result = handler(pyramid_env["request"])
        finally:
            pyramid_env["closer"]()

        return result
Пример #4
0
 def _callFUT(self, handler=None, registry=None, request=None, txn=None):
     if handler is None:
         def handler(request):
             return self.response
     if registry is None:
         registry = self.registry
     if request is None:
         request = self.request
     if txn is None:
         txn = self.txn
     from pyramid_tm import tm_tween_factory
     factory = tm_tween_factory(handler, registry, txn)
     return factory(request)
Пример #5
0
 def _callFUT(self, handler=None, registry=None, request=None, txn=None):
     if handler is None:
         def handler(request):
             return self.response
     if registry is None:
         registry = self.registry
     if request is None:
         request = self.request
     if txn is None:
         txn = self.txn
     request.tm = txn
     from pyramid_tm import tm_tween_factory
     factory = tm_tween_factory(handler, registry)
     return factory(request)
Пример #6
0
    def handler_inner(*args, **kwargs):
        from alchemist import scheduler

        pyramid_env = scripting.prepare(registry=scheduler.pyramid_registry)
        try:
            def handler_func(request):
                return func(request, *args, **kwargs)

            handler = tm_tween_factory(handler_func, pyramid_env["registry"])
            result = handler(pyramid_env["request"])
            return result
        except Exception:
            logging.error('Error in handling scheduled task', exc_info=1)
        finally:
            pyramid_env["closer"]()
Пример #7
0
    def __call__(self, *args, **kwargs):

        pyramid_env = self.get_env()

        try:
            # Get bound Task.__call__
            # http://stackoverflow.com/a/1015405/315168
            underlying = Task.__call__.__get__(self, Task)

            def handler(request):
                underlying(request, *args, **kwargs)

            handler = tm_tween_factory(handler, pyramid_env["registry"])
            result = handler(pyramid_env["request"])
        finally:
            pyramid_env["closer"]()

        return result
Пример #8
0
    def __call__(self, *args, **kwargs):
        registry = self.app.pyramid_config.registry
        pyramid_env = scripting.prepare(registry=registry)

        try:
            underlying = super().__call__
            if getattr(self, "pyramid", True):
                def handler(request):
                    return underlying(request, *args, **kwargs)
            else:
                def handler(request):
                    return underlying(*args, **kwargs)

            handler = tm_tween_factory(handler, pyramid_env["registry"])
            result = handler(pyramid_env["request"])
        finally:
            pyramid_env["closer"]()

        return result
Пример #9
0
    def __call__(self, *args, **kwargs):
        registry = self.app.pyramid_config.registry
        pyramid_env = scripting.prepare(registry=registry)

        try:
            underlying = super().__call__
            if getattr(self, "pyramid", True):

                def handler(request):
                    return underlying(request, *args, **kwargs)
            else:

                def handler(request):
                    return underlying(*args, **kwargs)

            handler = tm_tween_factory(handler, pyramid_env["registry"])
            result = handler(pyramid_env["request"])
        finally:
            pyramid_env["closer"]()

        return result