当前位置: 首页 > 面试题库 >

tornado Celery不能使用gen.Task或CallBack

郎正平
2023-03-14
问题内容

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代理吗?


问题答案:

医生说:

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

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



 类似资料:
  • 我现在的目标是创建一个网格,这将是我的游戏的基础。当玩家从菜单开始游戏时,这个网格应该出现在游戏场景上。稍后,我希望能够根据用户输入更改电路板的大小 1.在eventhandler中创建网格 我的推理是当玩家点击启动游戏的“SinglePlayer”按钮时创建网格。根据这个推理,我将简单地获取根节点(一个组)的子节点,并将gridpane添加到其中 为什么我被困住了 下面的代码段显示处理on bu

  • 我们在Spring WebFlux中使用反应性Spring数据存储库,我对SubscribeOn的理解是,它决定SubscribeOn之前的操作符将在flux中执行哪个线程池,而PublishOn则决定订阅将在哪个线程池上执行。然而,在下面的代码中,即使使用PublishOn和SubscribeOn,代码也不会在主线程上执行,而是返回到cluster-nio-worker-1。 另外,thread

  • 问题内容: 我已经开始学习Java的并发和线程。我知道同步的基础知识(即它的作用)。从概念上讲,我知道它提供了对Java中具有多个线程的共享资源的互斥访问。但是,当面对下面的示例时,让我感到困惑的是同步它是否是一个好主意。我知道代码的关键部分应该同步,并且不应过度使用此关键字,否则会影响性能。 问题答案: 假设每个线程通过 不同的数组, 则不需要同步,因为其余变量是局部的。 相反,如果您触发所有调

  • 我有以下rest服务: 我能做错什么?如何使我的应用程序从json消费实体,而不是? 更新:实体类代码不包含任何有趣的内容,只有和两个带有一些jpa注释的字段。 Update2:完整StackTrace: update3:我没有找到任何解决方案,所以我通过使用s而不是JSON来替换method argument和。但无论如何都需要解决方案。

  • 我正在Windows 2012R2上运行MySQL 5.6.26,在MySQL.ini中,所有内容都配置为使用UTF-8 Unicode(utf8)。 当我执行以下SQL命令时: 数据库返回给我以下数据: 118威尼斯3 5 0 56

  • 这是一个类似的问题:Eclipse找不到与sdkman一起安装的jdk 我在Mac上仍然面临这个问题() 我的两个 但是,我没有安装任何Java版本: 编辑: 我还尝试更新(与)中的JVM引用: 有人把这个弄好了吗? 谢谢!