繁体   English   中英

Python Tornado:如何使这个异步?

[英]Python Tornado: how can I make this asynchronous ?

在下面的代码中,当我执行message_response.get()时,它将使此特定代码同步。 现在有一种方法可以使这个异步吗? 只需将代码推送给经纪人即可。 芹菜工作者完成任务后,可以将结果写回客户端吗?

import tornado.websocket
from celery_main import do_something_celery_task


class HomePageRequestHandler(tornado.websocket.WebSocketHandler):
    def on_message(self, message):
        message_response = do_something_celery_task.apply_async((message,))
        # How can this be a non blocking call? 
        self.write_message(message_response.get())

    def open(self):
        pass

您应该尝试这样的事情: https : //github.com/mher/tornado-celery您将拥有这样的代码,但是我没有运行它。

from tornado.websocket import WebSocketHandler

class WebSocketBase(WebSocketHandler):
    @gen.coroutine
    def on_message(self, message):
        response = yield gen.Task(tasks.sleep.apply_async, args=[3])
        self.write_message(str(response.result))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM