- 63
- 0
tornado启动同时,运行指定函数(死循环),主要用来读取数据,推送到客户端
- 共 0 条
- 全部回答
-
月亮起雾了 普通会员 1楼
在Tornado框架中,由于其异步编程特性,如果在启动时启动一个函数(或者调用任何其他函数),这个函数并不会立即执行,而是会阻塞程序的其他部分,直到这个函数执行完毕或者超时。Tornado框架提供了一个全局异步事件处理程序,可以通过
@tornado.gen.coroutine注解来定义一个异步函数。以下是一个例子,展示了如何在启动时启动一个名为
main()的函数,该函数将阻塞直到其他Tornado事件处理程序(例如,一个生成器函数)完成:```python import tornado.gen
class MainHandler(tornado.web.RequestHandler): @tornado.gen.coroutine def start(self): self.write("Tornado starting...")
def main(): gen = tornado.gen.Generator() start = gen.start() try: while True: yield start except tornado.gen.TimeoutError: print("Timeout waiting for main function to finish")
if name == "main": app = tornado.web.Application([ ('/', MainHandler), ]) app.listen(8000) tornado.ioloop.IOLoop.current().start() ```
在这个例子中,
main()函数是一个异步生成器函数,它创建一个名为gen的异步生成器对象,然后调用start()方法开始生成器的执行。start()方法返回一个生成器对象,该对象将阻塞直到主函数main()完成。在主函数
main()中,我们使用yield start来调用生成器对象,并在每次调用yield start时阻塞程序,直到生成器对象完成。如果在start()方法中发生超时,那么yield start将抛出TimeoutError异常,这个异常会捕获并打印一条消息,表明等待主函数完成。注意:Tornado框架的异步函数执行是基于异步事件处理程序的,而不是直接在函数内部进行。因此,你不能直接在
main()函数内部调用其他函数,而是需要创建一个事件处理程序来处理start()方法的异步执行。如果你需要在主函数内部调用其他函数,你需要在事件处理程序中添加相应的代码来实现这个需求。
- 扫一扫访问手机版
回答动态

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器更新之后。服务器里面有部分玩家要重新创建角色是怎么回事啊?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题函数计算不同地域的是不能用内网吧?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题ARMS可以创建多个应用嘛?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题在ARMS如何申请加入公测呀?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题前端小程序接入这个arms具体是如何接入监控的,这个init方法在哪里进行添加?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器刚到期,是不是就不能再导出存档了呢?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器的游戏版本不兼容 尝试更新怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器服务器升级以后 就链接不上了,怎么办?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器转移以后服务器进不去了,怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器修改参数后游戏进入不了,是什么情况?预计能赚取 0积分收益
- 回到顶部
- 回到顶部

