0

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

我在 Django 中使用 celery 3.1.18,RabbitMQ 作为代理,Oracle 数据库作为后端,即:

CELERY_RESULT_BACKEND='djcelery.backends.database.DatabaseBackend'

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

突然之间,和弦都没有在我的 Dev 和 Prod 环境中触发回调,我不知道如何进一步调试。代码没有改变,昨晚,没有改变代码 *我所做的事情让和弦暂时恢复了生命,只是今天早上再次停止工作..表明这是某种资源问题而不是代码问题。

到目前为止,我有:

  1. 重新启动运行 rabbitmq-server 和 celery 的主机。
  2. 清除所有队列并重复步骤 1。
  3. 禁用后端(从 settings.py 中将其注释掉,收到有关禁用后端的错误,然后再次启用后端。
  4. 尝试运行显示在文档中工作的和弦的基本命令。该示例挂在外壳上,当您按 CTRL-C 退出时,您会得到:

    from celery import chord from tasks import add, sum callback = tsum.s() header = [add.s(i, i) for i in range(100)] result = chord(header)(callback) result.get()

    ^CTraceback(最后一次调用):文件“”,第 1 行,文件“/opt/exaboard/eXaboard/lib/python2.7/site-packages/celery/result.py”,第 169 行,get no_ack= no_ack,文件“/opt/exaboard/eXaboard/lib/python2.7/site-packages/celery/backends/base.py”,第 220 行,在 wait_for on_interval() 文件中“/opt/exaboard/eXaboard/lib/python2 .7/site-packages/celery/result.py”,第 181 行,在 maybe_reraise_parent_error node.maybe_reraise() 文件“/opt/exaboard/eXaboard/lib/python2.7/site-packages/celery/result.py”中,第 485 行,maybe_reraise result.maybe_reraise() 文件“/opt/exaboard/eXaboard/lib/python2.7/site-packages/celery/result.py”,第 270 行,如果 self.state 在 states.PROPAGATE_STATES:文件“/opt/exaboard/eXaboard/lib/python2.7/site-packages/celery/result.py”,第 394 行,在状态返回 self.get_task_meta()['status'] 文件“/opt/exaboard/eXaboard/lib/python2.7/site-packages/celery/result.py”,第 339 行,在 _get_task_meta 中返回 self._maybe_set_cache(self .backend.get_task_meta(self.id)) 文件“/opt/exaboard/eXaboard/lib/python2.7/site-packages/celery/backends/base.py”,第 292 行,在 get_task_meta meta = self._get_task_meta_for(task_id ) 文件“/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() 文件“/opt/exaboard/eXaboard/lib/python2.7/site-packages/djcelery/managers.py”,第 144 行,在 get_task 返回 self.get(task_id=task_id) 文件“/opt/exaboard/eXaboard/lib/ python2.7/site-packages/django/db/models/manager.py”,第 92 行,在 manager_method 返回 getattr(self.get_queryset(), name)(args, *kwargs) 文件“/opt/exaboard/eXaboard/lib/python2.7/site-packages/django/db/models/query.py”,行351,在 get num = len(clone) 文件“/opt/exaboard/eXaboard/lib/python2.7/site-packages/django/db/models/query.py”中,第 122 行,在 __len self._fetch_all()文件“/opt/exaboard/eXaboard/lib/python2.7/site-packages/django/db/models/query.py”,第 966 行,_fetch_all self._result_cache = list(self.iterator()) 文件“/ opt/exaboard/eXaboard/lib/python2.7/site-packages/django/db/models/query.py”,第 211 行,在迭代器中如果连接 [self.db].features.supports_select_related: 文件“/opt/exaboard /eXaboard/lib/python2.7/site-packages/django/db/models/query.py”,第 900 行,在 db @property KeyboardInterruptname)(args, *kwargs) 文件“/opt/exaboard/eXaboard/lib/python2.7/site-packages/django/db/models/query.py”,第 351 行,在 get num = len(clone) 文件中“/opt/exaboard/eXaboard/lib/python2.7/site-packages/django/db/models/query.py”,第 122 行,在 __len self._fetch_all() 文件中“/opt/exaboard/eXaboard/lib/ python2.7/site-packages/django/db/models/query.py”,第 966 行,在 _fetch_all self._result_cache = list(self.iterator()) 文件“/opt/exaboard/eXaboard/lib/python2.7 /site-packages/django/db/models/query.py”,第 211 行,在迭代器中,如果连接 [self.db].features.supports_select_related:文件“/opt/exaboard/eXaboard/lib/python2.7/site- packages/django/db/models/query.py”,第 900 行,在 db @property KeyboardInterruptname)(args, *kwargs) 文件“/opt/exaboard/eXaboard/lib/python2.7/site-packages/django/db/models/query.py”,第 351 行,在 get num = len(clone) 文件中“/opt/exaboard/eXaboard/lib/python2.7/site-packages/django/db/models/query.py”,第 122 行,在 __len self._fetch_all() 文件中“/opt/exaboard/eXaboard/lib/ python2.7/site-packages/django/db/models/query.py”,第 966 行,在 _fetch_all self._result_cache = list(self.iterator()) 文件“/opt/exaboard/eXaboard/lib/python2.7 /site-packages/django/db/models/query.py”,第 211 行,在迭代器中,如果连接 [self.db].features.supports_select_related:文件“/opt/exaboard/eXaboard/lib/python2.7/site- packages/django/db/models/query.py”,第 900 行,在 db @property KeyboardInterruptpy”,第 351 行,在 get num = len(clone) 文件中“/opt/exaboard/eXaboard/lib/python2.7/site-packages/django/db/models/query.py”,第 122 行,在 __len self ._fetch_all() 文件“/opt/exaboard/eXaboard/lib/python2.7/site-packages/django/db/models/query.py”,第 966 行,在 _fetch_all self._result_cache = list(self.iterator() )文件“/opt/exaboard/eXaboard/lib/python2.7/site-packages/django/db/models/query.py”,第211行,在迭代器中如果连接[self.db].features.supports_select_related:文件“ /opt/exaboard/eXaboard/lib/python2.7/site-packages/django/db/models/query.py”,第 900 行,在 db @property KeyboardInterruptpy”,第 351 行,在 get num = len(clone) 文件中“/opt/exaboard/eXaboard/lib/python2.7/site-packages/django/db/models/query.py”,第 122 行,在 __len self ._fetch_all() 文件“/opt/exaboard/eXaboard/lib/python2.7/site-packages/django/db/models/query.py”,第 966 行,在 _fetch_all self._result_cache = list(self.iterator() )文件“/opt/exaboard/eXaboard/lib/python2.7/site-packages/django/db/models/query.py”,第211行,在迭代器中如果连接[self.db].features.supports_select_related:文件“ /opt/exaboard/eXaboard/lib/python2.7/site-packages/django/db/models/query.py”,第 900 行,在 db @property KeyboardInterrupt/opt/exaboard/eXaboard/lib/python2.7/site-packages/django/db/models/query.py”,第 966 行,在 _fetch_all self._result_cache = list(self.iterator()) 文件“/opt/ exaboard/eXaboard/lib/python2.7/site-packages/django/db/models/query.py”,第 211 行,在迭代器中如果连接 [self.db].features.supports_select_related:文件“/opt/exaboard/eXaboard /lib/python2.7/site-packages/django/db/models/query.py”,第 900 行,在 db @property KeyboardInterrupt/opt/exaboard/eXaboard/lib/python2.7/site-packages/django/db/models/query.py”,第 966 行,在 _fetch_all self._result_cache = list(self.iterator()) 文件“/opt/ exaboard/eXaboard/lib/python2.7/site-packages/django/db/models/query.py”,第 211 行,在迭代器中如果连接 [self.db].features.supports_select_related:文件“/opt/exaboard/eXaboard /lib/python2.7/site-packages/django/db/models/query.py”,第 900 行,在 db @property KeyboardInterrupt第 900 行,在 db @property KeyboardInterrupt 中第 900 行,在 db @property KeyboardInterrupt 中

任何有关如何进一步调试的建议将不胜感激!

4

0 回答 0