gpt4 book ai didi

python - Django Celery 任务成功但客户端等待

转载 作者:行者123 更新时间:2023-11-28 16:46:47 26 4
gpt4 key购买 nike

我刚刚开始实现 Django+Celery+RabbitMQ 来完成一些后端任务。我从示例 add(x, y) 任务开始,以验证它是否正常工作,然后继续将我现有的实用程序方法放入 Celery 任务模块中。问题是当我调用我的任务时,它们运行良好,但客户永远得不到结果。

>>> r = SyncUsers.delay()
>>> r.get()
... Hangs here forever
^C
... (Stack trace omitted)
KeyboardInterrupt
>>> r.successful()
False

在 Celeryd 日志中:

[2012-11-01 11:15:23,442: INFO/MainProcess] Task celerytasks.tasks.SyncUsers[9e8f4da3-17d2-4944-9095-51de1afcaaf3] succeeded in 34.596668005s: <website.bullhorn.api.APIResult object at...

有人知道这里发生了什么吗?

编辑:刚刚注意到,当我现在调用 get() 时,我看到:

....\lib\site-packages\djcelery\managers.py:183: TxIsolationWarning: 在同一事务中使用事务隔离级别可重复读取的轮询结果可能会给出过时的结果。确保为每个轮询迭代提交事务。 "事务隔离级别的轮询结果"

它仍然会永远等待。

最佳答案

于是就有了答案。我正在使用 MySQL,所以我需要将事务隔离级别设置为 READ-COMMITTED

http://dev.mysql.com/doc/refman/5.1/en/set-transaction.html

也归功于http://www.no-ack.org/2010/07/mysql-transactions-and-django.html为我指明了正确的方向。 (博客现在似乎已禁止公众访问)

关于python - Django Celery 任务成功但客户端等待,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13176133/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com