Tornado celery 不能使用 gen.Task 或 CallBack
Tornado celery can't use gen.Task or CallBack
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和后台都是用redis的,我刚从
https://github.com/mher/tornado-celery
当我使用 amqp 代理和 redis 后端时,它运行良好,但在使用 redis 代理时却不行。这是因为tornado async不支持redis broker吗?
The doc 说:
NOTE: Currently callbacks only work with AMQP and Redis backends. To use the Redis backend, you must install tornado-redis.
所以 tornado-celery 不支持 redis 作为代理...当我使用 rabbitmq 作为代理 + 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
broker和后台都是用redis的,我刚从 https://github.com/mher/tornado-celery
当我使用 amqp 代理和 redis 后端时,它运行良好,但在使用 redis 代理时却不行。这是因为tornado async不支持redis broker吗?
The doc 说:
NOTE: Currently callbacks only work with AMQP and Redis backends. To use the Redis backend, you must install tornado-redis.
所以 tornado-celery 不支持 redis 作为代理...当我使用 rabbitmq 作为代理 + redis 作为后端时它工作。