i'v刚开始实现Django Celery RabbitMQ来执行一些后端任务。我从示例添加(x,y)任务开始,以验证它正在工作,然后继续将我现有的实用程序方法放置在芹菜任务模块中。问题是当我调用我的任务时,他们运行良好,但客户永远不会得到结果。
>>> r = SyncUsers.delay()
>>> r.get()
... Hangs here forever
^C
... (Stack trace omitted)
KeyboardInterrupt
>>> r.successful()
False
在芹菜日志中:
[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,因此我需要将交易隔离级别设置为读取
http://dev.mysql.com/doc/refman/5.1/en/set-transaction.html
也归功于http://www.no-ack.org/2010/07/mysql-transactions-and-django.html,将我指向正确的方向。(博客现在似乎已关闭公共访问)