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

Python reactor.callFromThread函数代码示例

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

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



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

示例1: run

 def run(self):
     while True:
         self.userv.wi_available.acquire()
         while len(self.userv.wi) == 0:
             self.userv.wi_available.wait()
         wi = self.userv.wi.pop(0)
         if wi == None:
             # Shutdown request, relay it further
             self.userv.wi.append(None)
             self.userv.wi_available.notify()
         self.userv.wi_available.release()
         if wi == None:
             break
         command, result_callback, callback_parameters = wi
         try:
             data, rtpc_delay = self.send_raw(command)
             if len(data) == 0:
                 data, rtpc_delay = None, None
         except Exception as e:
             print(e)
             data, rtpc_delay = None, None
         if result_callback != None:
             reactor.callFromThread(self.dispatch, result_callback, data, callback_parameters)
         if rtpc_delay != None:
             reactor.callFromThread(self.userv.register_delay, rtpc_delay)
开发者ID:lemenkov,项目名称:rtpproxy,代码行数:25,代码来源:Rtp_proxy_client_stream.py


示例2: _new_fragment

 def _new_fragment(self, hlssink):
     self.log("hlsink created a new fragment")
     try:
         fragment = hlssink.get_property('fragment')
     except:
         fragment = hlssink.emit('pull-fragment')
     reactor.callFromThread(self._process_fragment, fragment)
开发者ID:micolous,项目名称:flumotion,代码行数:7,代码来源:hlsstreamer.py


示例3: onSettingsChange

    def onSettingsChange(self, plugin_name, data):
        """
        The plugin has been changed by the frontend

        :param plugin_name: Name of plugin that changed
        :type plugin_name: str
        :param data: Complete data (changed and unchanged)
        :type data: dict
        :rtype: None
        """
        logger.info(u"onSettingsChange: {}".format(data))
        if not plugin_name:
            logger.error("Missing plugin name")
            return
        if not data:
            logger.error("Missing data")
            return
        logger.info(u"Sending data {}".format(data))
        reactor.callFromThread(self._sendJSON, {
            'msg': "plugin_data_set",
            'plugin_name': plugin_name,
            'data': data
        })
        # trigger db update
        reactor.callFromThread(self._sendJSON, {
            'msg': "plugin_data_get",
            'plugin_name': plugin_name
        })
开发者ID:the01,项目名称:paps-settings,代码行数:28,代码来源:pluginProtocol.py


示例4: test

 def test(self):
     crawler = mock.MagicMock()
     crawler.settings = CrawlerSettings()
     crawler.settings.overrides['USER_AGENT'] = 'CustomAgent'
     self.assertRaises(NotConfigured, RobotsTxtMiddleware, crawler)
     crawler.settings.overrides['ROBOTSTXT_OBEY'] = True
     crawler.engine.download = mock.MagicMock()
     ROBOTS = re.sub(r'^\s+(?m)', '', '''
     User-Agent: *
     Disallow: /admin/
     Disallow: /static/
     ''')
     response = Response('http://site.local/robots.txt', body=ROBOTS)
     def return_response(request, spider):
         deferred = Deferred()
         reactor.callFromThread(deferred.callback, response)
         return deferred
     crawler.engine.download.side_effect = return_response
     middleware = RobotsTxtMiddleware(crawler)
     spider = None  # not actually used
     # There is a bit of neglect in robotstxt.py: robots.txt is fetched asynchronously,
     # and it is actually fetched only *after* first process_request completes.
     # So, first process_request will always succeed.
     # We defer test() because otherwise robots.txt download mock will be called after assertRaises failure.
     self.assertIsNone(middleware.process_request(Request('http://site.local'), spider))  # not affected by robots.txt
     def test(r):
         self.assertIsNone(middleware.process_request(Request('http://site.local/allowed'), spider))
         self.assertRaises(IgnoreRequest, middleware.process_request, Request('http://site.local/admin/main'), spider)
         self.assertRaises(IgnoreRequest, middleware.process_request, Request('http://site.local/static/'), spider)
     deferred = Deferred()
     deferred.addCallback(test)
     reactor.callFromThread(deferred.callback, None)
     return deferred
开发者ID:dvska,项目名称:scrapy,代码行数:33,代码来源:test_downloadermiddleware_robotstxt.py


示例5: disconnect

    def disconnect(self):
        """ Disconnect from the database.

        This closes all active connections in the underlying
        connection pool, and calls the `on_connection_lost`. """
        self.metadata.bind.dispose()
        reactor.callFromThread(self.on_connection_lost)
开发者ID:alexbrasetvik,项目名称:Piped,代码行数:7,代码来源:db.py


示例6: do_topic

    def do_topic(self, line):
        """"topic [set|get] <roomid> [<newtopic>]"
        Set the topic for a room: topic set <roomid> <newtopic>
        Get the topic for a room: topic get <roomid>
        """
        try:
            args = self._parse(line, ["action", "roomid", "topic"])
            if "action" not in args or "roomid" not in args:
                print "Must specify set|get and a room ID."
                return
            if args["action"].lower() not in ["set", "get"]:
                print "Must specify set|get, not %s" % args["action"]
                return

            path = "/rooms/%s/topic" % urllib.quote(args["roomid"])

            if args["action"].lower() == "set":
                if "topic" not in args:
                    print "Must specify a new topic."
                    return
                body = {
                    "topic": args["topic"]
                }
                reactor.callFromThread(self._run_and_pprint, "PUT", path, body)
            elif args["action"].lower() == "get":
                reactor.callFromThread(self._run_and_pprint, "GET", path)
        except Exception as e:
            print e
开发者ID:0-T-0,项目名称:synapse,代码行数:28,代码来源:console.py


示例7: _send_receipt

 def _send_receipt(self, event, feedback_type):
     path = ("/rooms/%s/messages/%s/%s/feedback/%s/%s" %
            (urllib.quote(event["room_id"]), event["user_id"], event["msg_id"],
             self._usr(), feedback_type))
     data = {}
     reactor.callFromThread(self._run_and_pprint, "PUT", path, data=data,
                            alt_text="Sent receipt for %s" % event["msg_id"])
开发者ID:0-T-0,项目名称:synapse,代码行数:7,代码来源:console.py


示例8: wrapper

 def wrapper(*args, **kargs):
     q = Queue()
     def callback(value):
         q.put(None)
     def errback(failure):
         # Retrieve and save full exception info
         try:
             failure.raiseException()
         except:
             q.put(sys.exc_info())
     def g():
         try:
             d = func(*args, **kargs)
             try:
                 d.addCallbacks(callback, errback)
             # Check for a common mistake and display a nice error
             # message
             except AttributeError:
                 raise TypeError("you must return a twisted Deferred "
                                 "from your test case!")
         # Catch exceptions raised in the test body (from the
         # Twisted thread)
         except:
             q.put(sys.exc_info())
     reactor.callFromThread(g)
     try:
         error = q.get(timeout=timeout)
     except Empty:
         raise TimeExpired("timeout expired before end of test (%f s.)"
                           % timeout)
     # Re-raise all exceptions
     if error is not None:
         exc_type, exc_value, tb = error
         raise exc_type(exc_value).with_traceback(tb)
开发者ID:Hank02,项目名称:posts,代码行数:34,代码来源:twistedtools.py


示例9: writeResponse

 def writeResponse(message):
     global processing, queue
     self.transport.write(message + "\r\n")
     if queue.empty() == False:
         reactor.callFromThread(self.lineReceived, queue.get())
         print "Processing message in Queue"
     processing = False
开发者ID:anthonygillet,项目名称:scripts,代码行数:7,代码来源:twist.py


示例10: run

 def run(self):
     maxemptydata = 100
     while True:
         try:
             data, address = self.userv.skt.recvfrom(8192)
             if not data:
                 # Ugly hack to detect socket being closed under us on Linux.
                 # The problem is that even call on non-closed socket can
                 # sometimes return empty data buffer, making AsyncReceiver
                 # to exit prematurely.
                 maxemptydata -= 1
                 if maxemptydata == 0:
                     break
                 continue
             else:
                 maxemptydata = 100
         except Exception, why:
             if isinstance(why, socket.error) and why[0] in (ECONNRESET, ENOTCONN, ESHUTDOWN):
                 break
             if isinstance(why, socket.error) and why[0] in (EINTR,):
                 continue
             else:
                 print datetime.now(), 'Udp_server: unhandled exception when receiving incoming data'
                 print '-' * 70
                 traceback.print_exc(file = sys.stdout)
                 print '-' * 70
                 sys.stdout.flush()
                 sleep(1)
                 continue
         rtime = MonoTime()
         if self.userv.uopts.family == socket.AF_INET6:
             address = ('[%s]' % address[0], address[1])
         reactor.callFromThread(self.userv.handle_read, data, address, rtime)
开发者ID:JustRight,项目名称:rtpproxy,代码行数:33,代码来源:Udp_server.py


示例11: runTestFunc

 def runTestFunc():
     no_errors = False
     try:
         func(*clients)
         no_errors = True
     finally:
         reactor.callFromThread(superviseFunc, connections, no_errors)
开发者ID:mwicat,项目名称:skinnytest,代码行数:7,代码来源:sccptest.py


示例12: _client_removed_cb

 def _client_removed_cb(self, element, arg0, client_status):
     # treat as error if we were removed because of GST_CLIENT_STATUS_ERROR
     # FIXME: can we use the symbol instead of a numeric constant ?
     if client_status == 4:
         # since we get called from the streaming thread, hand off handling
         # to the reactor's thread
         reactor.callFromThread(self._client_error_cb)
开发者ID:ylatuya,项目名称:Flumotion,代码行数:7,代码来源:disker.py


示例13: _signal_kill

 def _signal_kill(self, signum, _):
     install_shutdown_handlers(signal.SIG_IGN)
     signame = signal_names[signum]
     log.msg(format='Received %(signame)s twice, forcing unclean shutdown',
             level=log.INFO, signame=signame)
     self._stop_logging()
     reactor.callFromThread(self._stop_reactor)
开发者ID:DLBob,项目名称:scrapy,代码行数:7,代码来源:crawler.py


示例14: next

    def next(self):
        """Since QueueReader is iterable, this is the function that runs the
        for-loop and dispatches work to the thread.

        This should be the only thread that executes outside of the Twisted
        main thread.
        """

        # If we just completed a range, we should tell the main thread.
        now = time()
        if self.currentData:
            dt = now - self.startedAt
            # self.currentData[1] is the un-preprocessed NonceRange.
            reactor.callFromThread(self._ranExecution, dt, self.currentData[1])
        self.startedAt = now

        # Block for more data from the main thread. In 99% of cases, though,
        # there should already be something here.
        # Note that this comes back with either a tuple, or a StopIteration()
        self.currentData = self.dataQueue.get(True)

        # Does the main thread want us to shut down, or pass some more data?
        if isinstance(self.currentData, StopIteration):
            raise self.currentData

        # We just took the only item in the queue. It needs to be restocked.
        reactor.callFromThread(self._requestMore)

        # currentData is actually a tuple, with item 0 intended for the kernel.
        return self.currentData[0]
开发者ID:Blizzard-,项目名称:Phoenix-Miner,代码行数:30,代码来源:QueueReader.py


示例15: do_register

    def do_register(self, line):
        """Registers for a new account: "register <userid> <noupdate>"
        <userid> : The desired user ID
        <noupdate> : Do not automatically clobber config values.
        """
        args = self._parse(line, ["userid", "noupdate"])

        password = None
        pwd = None
        pwd2 = "_"
        while pwd != pwd2:
            pwd = getpass.getpass("Type a password for this user: ")
            pwd2 = getpass.getpass("Retype the password: ")
            if pwd != pwd2 or len(pwd) == 0:
                print "Password mismatch."
                pwd = None
            else:
                password = pwd

        body = {
            "type": "m.login.password"
        }
        if "userid" in args:
            body["user"] = args["userid"]
        if password:
            body["password"] = password

        reactor.callFromThread(self._do_register, body,
                               "noupdate" not in args)
开发者ID:0-T-0,项目名称:synapse,代码行数:29,代码来源:console.py


示例16: intermediateWrite

    def intermediateWrite(self, timers, conflicting, similar, skipped):
        returnlist = []
        extend = returnlist.extend

        for (name, begin, end, serviceref, autotimername, message) in timers:
            ref = ServiceReference(str(serviceref))
            extend(
                (
                    "<e2simulatedtimer>\n" "   <e2servicereference>",
                    stringToXML(serviceref),
                    "</e2servicereference>\n",
                    "   <e2servicename>",
                    stringToXML(ref.getServiceName().replace("\xc2\x86", "").replace("\xc2\x87", "")),
                    "</e2servicename>\n",
                    "   <e2name>",
                    stringToXML(name),
                    "</e2name>\n",
                    "   <e2timebegin>",
                    str(begin),
                    "</e2timebegin>\n",
                    "   <e2timeend>",
                    str(end),
                    "</e2timeend>\n",
                    "   <e2autotimername>",
                    stringToXML(autotimername),
                    "</e2autotimername>\n" "</e2simulatedtimer>\n",
                )
            )

        if self._stillAlive:
            reactor.callFromThread(lambda: self._req.write("".join(returnlist)))
开发者ID:opendreambox,项目名称:enigma2-plugins,代码行数:31,代码来源:AutoTimerResource.py


示例17: do_joinalias

 def do_joinalias(self, line):
     try:
         args = self._parse(line, ["roomname"], force_keys=True)
         path = "/join/%s" % urllib.quote(args["roomname"])
         reactor.callFromThread(self._run_and_pprint, "POST", path, {})
     except Exception as e:
         print e
开发者ID:0-T-0,项目名称:synapse,代码行数:7,代码来源:console.py


示例18: run

    def run(self):
        req = self._req
        if self._stillAlive:
            req.setResponseCode(http.OK)
            req.setHeader("Content-type", "application/xhtml+xml")
            req.setHeader("charset", "UTF-8")
            reactor.callFromThread(
                lambda: req.write(
                    '<?xml version="1.0" encoding="UTF-8" ?>\n<e2autotimersimulate api_version="'
                    + str(API_VERSION)
                    + '">\n'
                )
            )

        def finishRequest():
            req.write("</e2autotimersimulate>")
            req.finish()

        id = req.args.get("id")
        if id:
            self.id = int(id[0])
        else:
            self.id = None

        try:
            autotimer.parseEPG(simulateOnly=True, uniqueId=self.id, callback=self.intermediateWrite)
        except Exception as e:

            def finishRequest():
                req.write("<exception>" + str(e) + "</exception><|PURPOSEFULLYBROKENXML<")
                req.finish()

        if self._stillAlive:
            reactor.callFromThread(finishRequest)
开发者ID:opendreambox,项目名称:enigma2-plugins,代码行数:34,代码来源:AutoTimerResource.py


示例19: do_list

    def do_list(self, line):
        """List data about a room.
        "list members <roomid> [query]" - List all the members in this room.
        "list messages <roomid> [query]" - List all the messages in this room.

        Where [query] will be directly applied as query parameters, allowing
        you to use the pagination API. E.g. the last 3 messages in this room:
        "list messages <roomid> from=END&to=START&limit=3"
        """
        args = self._parse(line, ["type", "roomid", "qp"])
        if not "type" in args or not "roomid" in args:
            print "Must specify type and room ID."
            return
        if args["type"] not in ["members", "messages"]:
            print "Unrecognised type: %s" % args["type"]
            return
        room_id = args["roomid"]
        path = "/rooms/%s/%s" % (urllib.quote(room_id), args["type"])

        qp = {"access_token": self._tok()}
        if "qp" in args:
            for key_value_str in args["qp"].split("&"):
                try:
                    key_value = key_value_str.split("=")
                    qp[key_value[0]] = key_value[1]
                except:
                    print "Bad query param: %s" % key_value
                    return

        reactor.callFromThread(self._run_and_pprint, "GET", path,
                               query_params=qp)
开发者ID:0-T-0,项目名称:synapse,代码行数:31,代码来源:console.py


示例20: _signal_kill

 def _signal_kill(self, signum, _):
     signame = signal_names[signum]
     log.msg('Received %s twice, forcing unclean shutdown' % signame, \
         level=log.INFO)
     log.log_level = log.SILENT # disable logging of confusing tracebacks
     reactor.callFromThread(self.engine.kill)
     install_shutdown_handlers(signal.SIG_IGN)
开发者ID:kenzouyeh,项目名称:scrapy,代码行数:7,代码来源:manager.py



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


鲜花

握手

雷人

路过

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

请发表评论

全部评论

专题导读
上一篇:
Python reactor.callInThread函数代码示例发布时间:2022-05-27
下一篇:
Python reactor.addSystemEventTrigger函数代码示例发布时间: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