セロリが自分のフォルダ構造で動作するようになっています。注:私はvirtualenvを使用していますが、それは問題ではありません。セロリの登録されていないタスクタイプのインポートエラー
cive/
celery_app.py
__init__.py
venv
framework/
tasks.py
__init__.py
civeAPI/
files tasks.py need
civeは私のルートプロジェクトフォルダです。
celery_app.py:
from __future__ import absolute_import
from celery import Celery
app = Celery('cive',
broker='amqp://',
backend='amqp://',
include=['cive.framework.tasks'])
# Optional configuration, see the application user guide.
app.conf.update(
CELERY_TASK_RESULT_EXPIRES=3600,
)
if __name__ == '__main__':
app.start()
tasks.py(簡体字)
from __future__ import absolute_import
#import other things
#append syspaths
from cive.celery_app import app
@app.task(ignore_result=False)
def start(X):
# do things
def output(X):
# output files
def main():
for d in Ds:
m = []
m.append(start.delay(X))
output([n.get() for n in m])
if __name__ == '__main__':
sys.exit(main(sys.argv[1:]))
私は、(外ルートCIVE DIR)を経由して労働者を開始
動作するようですcelery -A cive worker --app=cive.celery_app:app -l info
罰金、労働者を積み込み、表示する
[tasks]
. cive.framework.tasks.start_sessions
しかし、私は別の端子を介して私のtasks.pyを実行しよう:
python tasks.py
私はエラーを取得する:
Traceback (most recent call last):
File "tasks.py", line 29, in <module>
from cive.celery_app import app
ImportError: No module named cive.celery_app
私は、インポートの名前を変更する場合:
from celery_app import app #without the cive.celery_app
最終的にスクリプトを開始できますが、セロリはエラーを返します。
Received unregistered task of type 'cive.start_sessions'
私の輸入品や設定には問題があると思いますが、何も言えません。