【问题标题】:Tornado celery can't use gen.Task or CallBackTornado celery 不能使用 gen.Task 或 CallBack
【发布时间】:2015-05-02 11:09:16
【问题描述】:
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

broker 和 backends 都使用 redis,我只是从 https://github.com/mher/tornado-celery

当我使用 amqp 代理和 redis 后端时,它运行良好,但在使用 redis 代理时却不行。这是因为 tornado async 不支持 redis 代理吗?

【问题讨论】:

  • 当我使用 amqp 代理和 redis 后端时它运行良好,因为 tornado async 不支持 redis borker?

标签: python json redis celery tornado


【解决方案1】:

The doc 说:

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

所以 tornado-celery 不支持 redis 作为代理...当我使用 rabbitmq 作为代理 + redis 作为后端时它可以工作。

【讨论】:

    猜你喜欢
    • 2012-07-25
    • 1970-01-01
    • 2013-08-24
    • 2014-06-21
    • 1970-01-01
    • 2016-03-16
    • 1970-01-01
    • 1970-01-01
    • 2015-04-19
    相关资源
    最近更新 更多