• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

Python defer.inlineCallbacks函数代码示例

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

本文整理汇总了Python中twisted.internet.defer.inlineCallbacks函数的典型用法代码示例。如果您正苦于以下问题:Python inlineCallbacks函数的具体用法?Python inlineCallbacks怎么用?Python inlineCallbacks使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。



在下文中一共展示了inlineCallbacks函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Python代码示例。

示例1: test_inlineCallbacksTracebacks

    def test_inlineCallbacksTracebacks(self):
        """
        inlineCallbacks that re-raise tracebacks into their deferred
        should not lose their tracebacsk.
        """
        f = getDivisionFailure()
        d = defer.Deferred()
        try:
            f.raiseException()
        except:
            d.errback()

        failures = []
        def collect_error(result):
            failures.append(result)

        def ic(d):
            yield d
        ic = defer.inlineCallbacks(ic)
        ic(d).addErrback(collect_error)

        newFailure, = failures
        self.assertEquals(
            traceback.extract_tb(newFailure.getTracebackObject())[-1][-1],
            "1/0"
        )
开发者ID:AndyPanda95,项目名称:python-for-android,代码行数:26,代码来源:generator_failure_tests.py


示例2: __init__

    def __init__(self, orig, max_entries=1000, num_args=1, lru=True,
                 inlineCallbacks=False):
        self.orig = orig

        if inlineCallbacks:
            self.function_to_call = defer.inlineCallbacks(orig)
        else:
            self.function_to_call = orig

        self.max_entries = max_entries
        self.num_args = num_args
        self.lru = lru

        self.arg_names = inspect.getargspec(orig).args[1:num_args+1]

        if len(self.arg_names) < self.num_args:
            raise Exception(
                "Not enough explicit positional arguments to key off of for %r."
                " (@cached cannot key off of *args or **kwars)"
                % (orig.__name__,)
            )

        self.cache = Cache(
            name=self.orig.__name__,
            max_entries=self.max_entries,
            keylen=self.num_args,
            lru=self.lru,
        )
开发者ID:roblabla,项目名称:synapse,代码行数:28,代码来源:descriptors.py


示例3: loadCommands

    def loadCommands(self):
        commands = {}
        path = yield self.config.get("path","commands")
        for loader, name, ispkg in pkgutil.iter_modules([path]):
            if ispkg:
                continue
            try:
                command = getattr(__import__(path, fromlist=[name.encode("utf8")]), name)
                reload(command)
                command.config["name"] = name
                command.config["command"] = inlineCallbacks(command.command) if inspect.isgeneratorfunction(command.command) else command.command
                args, _, _, kwargs = inspect.getargspec(command.command)

                if args[:5] != ["guid", "manager", "irc", "channel", "user"]:
                    continue

                if kwargs:
                    boundary = -1 * len(kwargs)
                    command.config["args"] = args[5:boundary]
                    command.config["kwargs"] = args[boundary:]
                else:
                    command.config["args"] = args[5:]
                    command.config["kwargs"] = []

                if "disabled" in command.config and command.config["disabled"]:
                    continue

                commands[name] = command.config
            except:
                self.err("Failed to load {}.{}", path, name)
        self.commands = commands
开发者ID:lae,项目名称:Servrhe,代码行数:31,代码来源:commands.py


示例4: operation

def operation(func):
    func = defer.inlineCallbacks(func)

    def wrap(self, *a, **kw):
        return self._do_operation(func, self, *a, **kw)

    return wrap
开发者ID:Dev0n,项目名称:txMySQL,代码行数:7,代码来源:protocol.py


示例5: delayed

def delayed(func):
    func = inlineCallbacks(func)

    @wraps(func)
    def wrapper(self, request, *args, **kwargs):
        was_interrupted = [False]
        log = Logger('web')

        def on_cancel(failure):
            err(failure, 'Call to "%s" was interrupted' % request.path)
            was_interrupted[0] = True

        request.notifyFinish().addErrback(on_cancel)

        def finish_request(result):
            log.debug('%s(%r, args=%r, kwargs=%r)=%s' % (func.__name__, request, args, kwargs, result))

            if isinstance(result, Failure):
                request.setResponseCode(INTERNAL_SERVER_ERROR)
                log.exception('Call to %s(%r, args=%r, kwargs=%r) failed' % (func.__name__, request, args, kwargs), exc_info = (result.type, result.value, result.getTracebackObject()))

            if was_interrupted[0] == False and result != NOT_DONE_YET:
                request.finish()

        log.debug('Calling %s(%r, args=%r, kwargs=%r)' % (func.__name__, request, args, kwargs))
        d = func(self, request, *args, **kwargs)
        log.debug('Result: %s' % d)
        log.debug('is returned deferred was called? %s' % d.called)
        d.addBoth(finish_request)
        return NOT_DONE_YET
    return wrapper
开发者ID:arhibot,项目名称:twisted-lock,代码行数:31,代码来源:web.py


示例6: action

def action(fn):
    """
    Decorator which wraps an action callback conforming to the twisted
    inlineCallbacks interface.  This lets us write synchronous-looking code
    that uses asynchronous methods from twisted.
    """
    from twisted.internet import reactor
    from twisted.internet.defer import inlineCallbacks
    from twisted.python.failure import Failure
    inlinefn = inlineCallbacks(fn)
    def on_return(ret):
        if isinstance(ret, Failure):
            print "action failed: " + ret.getErrorMessage()
        reactor.stop()
    def trampoline(ns):
        section = ns.get_section('client')
        debug = section.get_bool("debug", False)
        if debug:
            startLogging(StdoutHandler(), DEBUG)
        else:
            startLogging(None)
        def when_running():
            defer = inlinefn(ns)
            defer.addBoth(on_return)
        reactor.callWhenRunning(when_running)
        reactor.run()
    return trampoline
开发者ID:mikefort,项目名称:mandelbrot,代码行数:27,代码来源:action.py


示例7: wrapDatabaseAndCallbacks

def wrapDatabaseAndCallbacks(fn):
    """
    Decorator; convenience for methods that need mock db and yield-Deferred syntax
    """
    fnICB = defer.inlineCallbacks(fn)
    fnMockedConfig = mockConfig()(fnICB)
    return wraps(fn)(fnMockedConfig)
开发者ID:corydodt,项目名称:Noms,代码行数:7,代码来源:__init__.py


示例8: wrap

    def wrap(fn):
        if inspect.isgeneratorfunction(fn):
            fn = inlineCallbacks(fn)

        @functools.wraps(fn)
        @twistedtools.deferred(timeout=fn.timeout if hasattr(fn, 'timeout') else 1.0)
        def ret():
            # dbg("\n============================================\n")

            import spinoff.actor._actor
            spinoff.actor._actor.TESTING = True

            Actor.reset_flags(debug=True)

            # TODO: once the above TODO (fresh Node for each test fn) is complete, consider making Events non-global by
            # having each Node have its own Events instance.
            Events.reset()

            def check_memleaks():
                if '__pypy__' not in sys.builtin_module_names:
                    gc.collect()
                    for trash in gc.garbage[:]:
                        if isinstance(trash, DebugInfo):
                            # dbg("DEBUGINFO: __del__")
                            if trash.failResult is not None:
                                exc = Unclean(repr(trash.failResult.value) + '\n' + str(trash._getDebugTracebacks()))
                                trash.__dict__.clear()
                                raise exc
                            gc.garbage.remove(trash)

                    assert not gc.garbage, "Memory leak detected: %r" % (gc.garbage,)

                    # if gc.garbage:
                    #     dbg("GARGABE: detected after %s:" % (fn.__name__,), len(gc.garbage))
                    #     import objgraph as ob
                    #     import os

                    #     def dump_chain(g_):
                    #         def calling_test(x):
                    #             if not isframework(x):
                    #                 return None
                    #         import spinoff
                    #         isframework = lambda x: type(x).__module__.startswith(spinoff.__name__)
                    #         ob.show_backrefs([g_], filename='backrefs.png', max_depth=100, highlight=isframework)

                    #     for gen in gc.garbage:
                    #         dump_chain(gen)
                    #         dbg("   TESTWRAP: mem-debuggin", gen)
                    #         import pdb; pdb.set_trace()
                    #         os.remove('backrefs.png')

            return (
                deferred_with(ErrorCollector(), fn)
                .addBoth(lambda result: Node.stop_all().addCallback(lambda _: result))
                .addBoth(lambda result: (_process_idle_calls(), result)[-1])
                .addBoth(lambda result: (check_memleaks(), result)[-1])
            )

        return ret
开发者ID:mmikulicic,项目名称:spinoff,代码行数:59,代码来源:actor.py


示例9: testReturnNoValue

    def testReturnNoValue(self):
        """Ensure a standard python return results in a None result."""
        def _noReturn():
            yield 5
            return
        _noReturn = inlineCallbacks(_noReturn)

        return _noReturn().addCallback(self.assertEqual, None)
开发者ID:hanwei2008,项目名称:ENV,代码行数:8,代码来源:test_defgen.py


示例10: testReturnValue

    def testReturnValue(self):
        """Ensure that returnValue works."""
        def _return():
            yield 5
            returnValue(6)
        _return = inlineCallbacks(_return)

        return _return().addCallback(self.assertEqual, 6)
开发者ID:hanwei2008,项目名称:ENV,代码行数:8,代码来源:test_defgen.py


示例11: set_route

def set_route(call, method, route, **kwargs):
    call = defer.inlineCallbacks(call)
    call.method = method
    call.route = re.compile(route)
    call.template = kwargs.get('template', None)
    call.last = kwargs.get('last', False)
    call.redirect = kwargs.get('redirect', None)
    return call
开发者ID:huge-sesh,项目名称:sessionland,代码行数:8,代码来源:api.py


示例12: deferredPage

def deferredPage(func):
    func = defer.inlineCallbacks(func)
    def wrap(self, request):
        (func(self, request)
            .addErrback(request.processingFailed)
            .addErrback(lambda f: None))
        return NOT_DONE_YET
    return wrap
开发者ID:habnabit,项目名称:txalarmclock,代码行数:8,代码来源:alarmserver.py


示例13: webInlineCallbacks

def webInlineCallbacks(function):
    function = inlineCallbacks(function)
    
    def __func__(*args, **kwargs):
        function(*args, **kwargs)
        return NOT_DONE_YET
    
    return __func__
开发者ID:wadey,项目名称:whereinthe,代码行数:8,代码来源:whereinthe.py


示例14: async_test

def async_test(f, *args, **kwargs):
    "Starts an asynchronous test, waits for it to complete, and returns its result."
    result = []
    def cb(value, good):
        result.append(good)
        result.append(value)
    inlineCallbacks(f)(*args, **kwargs).addCallbacks(callback = cb, callbackArgs = [True],
                                    errback  = cb, errbackArgs  = [False])
    while not result:
        reactor.iterate(0.02)
    if result[0]:
        # Uncomment the following line to check that all the tests
        # really are being run to completion.
        #raise(Exception("Success"))
        return result[1]
    else:
        result[1].printTraceback()
        result[1].raiseException()
开发者ID:PR2,项目名称:linux_networking,代码行数:18,代码来源:async_helpers.py


示例15: __init__

    def __init__(self, orig, num_args, inlineCallbacks, cache_context=False):
        self.orig = orig

        if inlineCallbacks:
            self.function_to_call = defer.inlineCallbacks(orig)
        else:
            self.function_to_call = orig

        arg_spec = inspect.getargspec(orig)
        all_args = arg_spec.args

        if "cache_context" in all_args:
            if not cache_context:
                raise ValueError(
                    "Cannot have a 'cache_context' arg without setting"
                    " cache_context=True"
                )
        elif cache_context:
            raise ValueError(
                "Cannot have cache_context=True without having an arg"
                " named `cache_context`"
            )

        if num_args is None:
            num_args = len(all_args) - 1
            if cache_context:
                num_args -= 1

        if len(all_args) < num_args + 1:
            raise Exception(
                "Not enough explicit positional arguments to key off for %r: "
                "got %i args, but wanted %i. (@cached cannot key off *args or "
                "**kwargs)"
                % (orig.__name__, len(all_args), num_args)
            )

        self.num_args = num_args

        # list of the names of the args used as the cache key
        self.arg_names = all_args[1:num_args + 1]

        # self.arg_defaults is a map of arg name to its default value for each
        # argument that has a default value
        if arg_spec.defaults:
            self.arg_defaults = dict(zip(
                all_args[-len(arg_spec.defaults):],
                arg_spec.defaults
            ))
        else:
            self.arg_defaults = {}

        if "cache_context" in self.arg_names:
            raise Exception(
                "cache_context arg cannot be included among the cache keys"
            )

        self.add_cache_context = cache_context
开发者ID:DoubleMalt,项目名称:synapse,代码行数:57,代码来源:descriptors.py


示例16: wrap

 def wrap(f):
     func = inlineCallbacks(rpc_schema.schema(path, drop_args=drop_args)(f))
     def wrapped_f(*args, **kwargs):
         try:
             result = func(*args, **kwargs)
             return result
         except ValidationError as e:
             error(e)
             raise WebserverException("exceptions/webserver/schema_exception", str(f.validator.schema), e.args)
     return wrapped_f
开发者ID:ysobolev,项目名称:sputnik,代码行数:10,代码来源:plugin.py


示例17: test_get_block

 def test_get_block(self):
     factory = p2p.ClientFactory(networks.nets['bitcoin'])
     c = reactor.connectTCP('127.0.0.1', 8333, factory)
     try:
         h = 0x000000000000046acff93b0e76cd10490551bf871ce9ac9fad62e67a07ff1d1e
         block = yield deferral.retry()(defer.inlineCallbacks(lambda: defer.returnValue((yield (yield factory.getProtocol()).get_block(h)))))()
         assert data.merkle_hash(map(data.hash256, map(data.tx_type.pack, block['txs']))) == block['header']['merkle_root']
         assert data.hash256(data.block_header_type.pack(block['header'])) == h
     finally:
         factory.stopTrying()
         c.disconnect()
开发者ID:0xDEADFACE,项目名称:p2pool,代码行数:11,代码来源:test_p2p.py


示例18: test_nonGeneratorReturn

    def test_nonGeneratorReturn(self):
        """
        Ensure that C{TypeError} with a message about L{inlineCallbacks} is
        raised when a non-generator returns something other than a generator.
        """
        def _noYield():
            return 5
        _noYield = inlineCallbacks(_noYield)

        self.assertIn("inlineCallbacks",
            str(self.assertRaises(TypeError, _noYield)))
开发者ID:hanwei2008,项目名称:ENV,代码行数:11,代码来源:test_defgen.py


示例19: test_nonGeneratorReturnValue

    def test_nonGeneratorReturnValue(self):
        """
        Ensure that C{TypeError} with a message about L{inlineCallbacks} is
        raised when a non-generator calls L{returnValue}.
        """
        def _noYield():
            returnValue(5)
        _noYield = inlineCallbacks(_noYield)

        self.assertIn("inlineCallbacks",
            str(self.assertRaises(TypeError, _noYield)))
开发者ID:hanwei2008,项目名称:ENV,代码行数:11,代码来源:test_defgen.py


示例20: inline_callbacks

def inline_callbacks(original, debug=False):
    """
    Decorate a function like ``inlineCallbacks`` would but in a more
    Eliot-friendly way.  Use it just like ``inlineCallbacks`` but where you
    want Eliot action contexts to Do The Right Thing inside the decorated
    function.
    """
    f = eliot_friendly_generator_function(original)
    if debug:
        f.debug = True
    return inlineCallbacks(f)
开发者ID:ClusterHQ,项目名称:eliot,代码行数:11,代码来源:twisted.py



注:本文中的twisted.internet.defer.inlineCallbacks函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Python defer.maybeDeferred函数代码示例发布时间:2022-05-27
下一篇:
Python defer.gatherResults函数代码示例发布时间:2022-05-27
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap