龙卷风芹菜不能使用gen.Task或CallBack

时间:2015-03-02 06:43:31

标签: python json redis celery tornado

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 broker和redis后端时,它运行良好,但在使用redis代理时则不行。这是因为龙卷风异步不支持redis经纪人吗?

1 个答案:

答案 0 :(得分:1)

The doc说:

  

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

因此龙卷风芹菜不支持redis作为经纪人......当我使用rabbitmq作为经纪人+ redis作为后端时,它就有效。