0

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

システムがいつ機能し、いつ機能しないかをまだ判断できませんでした。しかし、関連するすべてのパッケージを現在入手可能な最新バージョンにアップグレードしましたが、まだ機能しません。

なぜこれが機能しないのか、どうすれば修正できるのかについてのアイデアを期待しています。私はちょっと必死なので、すべてのフィードバックは非常に高く評価されています!

4

1 に答える 1

0

これは、現在の3.0開発で修正されたバグである可能性があります。次のものをインストールすることで、テストに役立てることができます。

pip install https://github.com/celery/celery/zipball/3.0

于 2012-12-06T16:07:14.617 に答える