使用RabbitMQ代理和数据库后端在Django中运行芹菜和弦的调试步骤?

时间:2016-06-08 17:35:25

标签: django rabbitmq celery chord

我正在努力调试我突然遇到的问题并且会重视一些建议。

我正在使用带有Django的芹菜3.1.18,RabbitMQ作为代理,Oracle数据库作为后端,即:

CELERY_RESULT_BACKEND =' djcelery.backends.database.DatabaseBackend'

我的代码使用和弦,并且已经成功运作了一年左右。

所有突然的和弦都没有触发我的Dev和Prod envs的回调,我对如何进一步调试感到茫然。代码没有改变,昨晚,没有改变代码*我做的事情使得和弦恢复生命只是为了今天早上再次停止工作..暗示这是某种资源问题而不是代码问题。

到目前为止,我有:

  1. 重新启动了rabbitmq-server和celery正在运行的主机。
  2. 清除所有队列并重复步骤1.
  3. 禁用后端(从settings.py中注释掉,得到有关禁用后端的错误,然后再次启用后端。
  4. 试图运行显示在文档中工作的和弦的基本命令。这个例子挂在shell上,当你CTRL-C out时,你得到:

    来自芹菜进口和弦 从任务导入添加,总和 callback = tsum.s() header = [add.s(i,i)for i in range(100)] result = chord(header)(callback) result.get()

    ^ CTraceback(最近一次调用最后一次):文件&#34;&#34;,第1行,在文件&#34; /opt/exaboard/eXaboard/lib/python2.7/site-packages/celery/ result.py&#34;,第169行,在get no_ack = no_ack,File&#34; /opt/exaboard/eXaboard/lib/python2.7/site-packages/celery/backends/base.py" ;, line 220,在wait_for on_interval()文件&#34; /opt/exaboard/eXaboard/lib/python2.7/site-packages/celery/result.py" ;,第181行,在maybe_reraise_parent_error node.maybe_reraise()文件& #34; /opt/exaboard/eXaboard/lib/python2.7/site-packages/celery/result.py" ;,第485行,在may_reraise result.maybe_reraise()文件&#34; / opt / exaboard / eXaboard /lib/python2.7/site-packages/celery/result.py" ;,第270行,如果self.state处于states.PROPAGATE_STATES:File&#34; / opt / exaboard / eXaboard / lib / python2,则为may_reraise。 7 / site-packages / celery / result.py&#34;,第394行,状态返回self.get_task_meta()[&#39; status&#39;]文件&#34; / opt / exaboard / eXaboard / lib / python2.7 / site-packages / celery / result.py&#34;,第339行,在_get_task_中meta return self._maybe_set_cache(self.backend.get_task_meta(self.id))File&#34; /opt/exaboard/eXaboard/lib/python2.7/site-packages/celery/backends/base.py",第292行,在get_task_meta meta = self._get_task_meta_for(task_id)文件&#34; /opt/exaboard/eXaboard/lib/python2.7/site-packages/djcelery/backends/database.py" ;,第40行,在_get_task_meta_for返回self.TaskModel._default_manager.get_task(task_id).to_dict()文件&#34; /opt/exaboard/eXaboard/lib/python2.7/site-packages/djcelery/managers.py" ;,第144行,在get_task中返回self.get(task_id = task_id)文件&#34; /opt/exaboard/eXaboard/lib/python2.7/site-packages/django/db/models/manager.py" ;,第92行,在manager_method返回getattr(self.get_queryset(),name)(args,* kwargs)文件&#34; /opt/exaboard/eXaboard/lib/python2.7/site-packages/django/db/models/query.py&# 34;,第351行,在get num = len(clone)文件&#34; /opt/exaboard/eXaboard/lib/python2.7/site-packages/django/db/models/query.py" ;,行122,在__len self._fetch_all中()文件&#34; /opt/exaboard/eXaboard/lib/python2.7/site-packages/django/db/models/query.py" ;,第966行,在_fetch_all self._result_cache = list(self。 iterator())文件&#34; /opt/exaboard/eXaboard/lib/python2.7/site-packages/django/db/models/query.py" ;,第211行,在迭代器中如果连接[self.db ] .features.supports_select_related:文件&#34; /opt/exaboard/eXaboard/lib/python2.7/site-packages/django/db/models/query.py" ;,第900行,db @property KeyboardInterrupt < / p>

  5. 关于如何进一步调查的任何建议都将非常感谢!

0 个答案:

没有答案