web-dev-qa-db-ja.com

セロリワーカーを起動できません(昆布.asynchronous.timer)

私はCelery(Django)で最初のステップを実行し、バックグラウンドで重いプロセスを実行しようとしました。 RabbitMQサーバーをインストールしています。しかし、私が試してみると、celery -A my_app worker -l info次のエラーをスローします

File "<frozen importlib._bootstrap>", line 994, in _gcd_import
File "<frozen importlib._bootstrap>", line 971, in _find_and_load
File "<frozen importlib._bootstrap>", line 955, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 665, in _load_unlocked
File "<frozen importlib._bootstrap_external>", line 678, in exec_module
File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
File "c:\anaconda3\lib\site-packages\celery\concurrency\prefork.py", line 
18, in <module>
from celery.concurrency.base import BasePool
File "c:\anaconda3\lib\site-packages\celery\concurrency\base.py", line 15, 
in <module>
from celery.utils import timer2
File "c:\anaconda3\lib\site-packages\celery\utils\timer2.py", line 16, in 
<module>
from kombu.asynchronous.timer import Entry
ModuleNotFoundError: No module named 'kombu.asynchronous.timer'

たくさん検索しましたが、うまくいかないようです。どんな助けでも大歓迎です。ありがとうございました!

6
Kshitij G

同じ問題がありますが、バージョン3.1.25でセロリを再インストールすると解決しました

pip uninstall celery && pip install celery==3.1.25

Windowsがセロリ4で公式にサポートされていないためか、 https://github.com/celery/celery/issues/3551

2
chuhy

TL; DR: virtualenvのルートからkombuディレクトリを削除します(存在する場合)。 Windowsでのみ失敗する可能性があります。

癖のようです。同じエラーを見つけて、何が起こっているのかを調べました。

Pipがダウンロードするホイールパッケージは問題ないように見えます(kombu.asynchronous.timerが含まれています)。最後のバージョン(現在は4.2.0)のリリースも問題ありません。奇妙なのは、virtualenvのインストールで見つけたものです。

Virtualenvルートにライブラリのコンテンツを含むkombuディレクトリが見つかりましたが、「非同期」ディレクトリの横に「async」ディレクトリもあります。 asyncにはtimer.pyファイルがありますが、非同期にはないため、これらのディレクトリは4.2.0リリースのものではありません。

どこから来たの?ホイールのデータディレクトリからのようです。

そこで、解決策:virtualenvのルートからkombuディレクトリを削除すると、celeryが機能しました。

3
Dario Castañé

Pip(3.1.26Post2)からのデフォルトのCeleryインストールでこの問題が発生しました。上記のように、代わりにバージョン3.1.25をインストールしましたが、Celeryはまだ機能していませんでした。したがって、最新バージョンを明示的にインストールしました。

pip install Celery == 4.3

そして今、すべてが機能しています!

1
Corri

私はあなたが持っているのと同じpythonバージョンでセロリをテストしました、そしてそれは大丈夫です。そしてまた https://github.com/celery/kombu/blob/master/kombu/asynchronous/ timer.py は、ランダムに名前を変更しても効果がないことを示しています。pip uninstall kombu && pip --no-cache-dir install -U kombuを試してkombuの新規インストールを実行する必要があります。インストールに問題があるはずです。 。したがって、kombu再インストールが機能しなかった場合は、すべてを再インストールしてみてください。

0
Juggernaut

セロリから始めました。指示に従い、Celery v4.2.0をインストールしました

コマンドを実行しようとしたとき:celery -A mysite worker -l infoエラーが発生しました:

ModuleNotFoundError: No module named 'kombu.asynchronous.timer

セロリのインストールを削除しました:pip uninstall celery

その後、「chuhy」推奨としてCelery3.1.25をインストールしました

しかし..他にも問題があったので、すぐに3.1.25をアンインストールし、celeryv4.2.0を再インストールしました。

このシナリオの後、エラーは再び発生しませんでした。

0
Shachar Czitron

私はWindowsで作業しているので、これに少し問題がありました。しかし、私の解決策は、python 3.6.8で新しいcondaenvを作成することでした(セロリはpython 3.7で動作する可能性があることを理解していますが、多くの問題があります)。次に、最新バージョンのcelery(4.3.0)とDjango(2.2.3)のインストールに進みます。その後、すべてが正常に機能しました。

0
fimac