Redis 如果芹菜(显然)随机忘记了任务,我该怎么办?

Redis 如果芹菜(显然)随机忘记了任务,我该怎么办?,redis,celery,celery-task,Redis,Celery,Celery Task,我有一个装有sqlalchemy的烧瓶应用程序,还有一个芹菜工人正在运行。我使用redis作为我的经纪人。每次有人在对话中提交新邮件时,工作人员就会启动,并向所有参与对话的人发送通知邮件。因此,它连接到数据库并获取所有相关的电子邮件地址 不幸的是,似乎有一个随机因素决定芹菜是否知道发送邮件的任务。在一些启动后,它工作得很好(有时),在一些启动后,它根本不工作。当它不工作时,我得到的错误是: [2012-11-28 21:42:58,751: ERROR/MainProcess] Received

我有一个装有sqlalchemy的烧瓶应用程序,还有一个芹菜工人正在运行。我使用redis作为我的经纪人。每次有人在对话中提交新邮件时,工作人员就会启动,并向所有参与对话的人发送通知邮件。因此,它连接到数据库并获取所有相关的电子邮件地址

不幸的是,似乎有一个随机因素决定芹菜是否知道发送邮件的任务。在一些启动后,它工作得很好(有时),在一些启动后,它根本不工作。当它不工作时,我得到的错误是:

[2012-11-28 21:42:58,751: ERROR/MainProcess] Received unregistered task of type 'messages.sendnotifies'.
 The message has been ignored and discarded.

 Did you remember to import the module containing this task?
 Or maybe you are using relative imports?
 Please see http://bit.ly/gLye1c for more information.

 The full contents of the message body was:
 {'retries': 0, 'task': 'messages.sendnotifies', 'eta': None, 'args': [41L], 'expires': None, 'callbacks': None, 'errbacks': None, 'kwargs': {}, 'id': '47da3ba7-ec91-4056-bb4f-a6afec2f960f', 'utc': True} (183b)
 Traceback (most recent call last):
   File "/var/www/virtual/venv/lib/python2.7/site-packages/celery/worker/consumer.py", line 410, in on_task_received
     connection = self.connection
 KeyError: 'messages.sendnotifies'
当我使用
--loglevel=DEBUG
运行芹菜时,它会在任务列表中列出任务:

[Tasks]
   . celery.backend_cleanup
   . celery.chain
   . celery.chord
   . celery.chord_unlock
   . celery.chunks
   . celery.group
   . celery.map
   . celery.starmap
   . event.notfiy
   . messages.sendnotifies
   . money.checktransaction
   . money.deploypayment
   . money.invoicepromotion
   . protocols.plotweight
   . questionnaire.deploy
   . questionnaire.suitability
   . registration.notify
   . tracking.track
   . user.checkaccount
   . user.checkaccounts
   . user.fixpermissions
   . user.genpassreset
我还不能确定一个系统,它什么时候起作用,什么时候不起作用。但我已将所有相关软件包升级到今天可用的最新版本,但仍然无法工作


我希望有任何关于为什么这可能不起作用的想法,以及我如何能够修复它的想法。每一个反馈都非常感谢,因为我有点绝望

这可能是当前3.0开发中修复的错误,您可以通过 安装:

pip安装