pythontronado:如何使这个异步?

2024-03-28 16:21:07 发布

您现在位置:Python中文网/ 问答频道 /正文

在下面的代码中,当我发送消息时_响应.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

Tags: 代码importself消息messagetaskgetresponse
1条回答
网友
1楼 · 发布于 2024-03-28 16:21:07

你应该试试这样的方法: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))

相关问题 更多 >