小编典典

tornado Celery不能使用gen.Task或CallBack

redis

class AsyncHandler(tornado.web.RequestHandler):

    @tornado.web.asynchronous
    def get(self):
        tasks.sleep.apply_async(args=[5], callback=self.on_result)

    def on_result(self, response):
        self.write(str(response.result))
        self.finish()

引发错误:

    raise TypeError(repr(o) + " is not JSON serializable")
TypeError: <bound method AsyncHandler.on_result 
of <__main__.AsyncHandler object at 0x10e7a19d0>> is not JSON serializable

代理和后端都使用redis,我只是从https://github.com/mher/tornado-
celery复制而来

当我使用amqp代理和redis后端时,它可以很好地工作,但在使用redis代理时却不能。这是因为tornado异步不支持Redis代理吗?


阅读 401

收藏
2020-06-20

共1个答案

小编典典

医生说:

注意:当前回调仅适用于AMQP和Redis后端。要使用Redis后端,必须安装tornado-redis。

因此,tornadoCelery不支持将redis作为代理…当我使用Rabbitmq作为代理+ redis作为后端时,它可以工作。

2020-06-20