[英]How to run multiple celery workers?
我在 python 中有兩個任務想通過 celery 在后台運行它們。 我使用以下函數來定義芹菜。
from celery import Celery
def make_celery(app):
celery = Celery(
app.import_name,
backend=app.config['CELERY_RESULT_BACKEND'],
broker=app.config['CELERY_BROKER_URL']
)
celery.conf.update(app.config)
class ContextTask(celery.Task):
def __call__(self, *args, **kwargs):
with app.app_context():
return self.run(*args, **kwargs)
celery.Task = ContextTask
return celery
flask_app = Flask(__name__)
flask_app.config.update(
CELERY_BROKER_URL='redis://localhost:6379/0',
CELERY_RESULT_BACKEND='redis://localhost:6379/0'
)
celery = make_celery(flask_app)
####task 1
@celery.task(name="run1")
def code1(a, b):
return a * b
####task 2
@celery.task(name="run2")
def code2(c, d):
return c + d
code1.delay(5, 8)
code2.delay(77, 26)
我按以下方式運行芹菜工人:
celery -A run1.celery worker&
celery -A run2.celery worker&
但是,當我將一些作業發送到后台時,我會遇到以下錯誤:
""收到類型為'run1'的未注冊任務。 該消息已被忽略並丟棄。 你記得導入包含這個任務的模塊嗎? 或者也許你正在使用相對進口?""
當我只運行一個芹菜工人時,它可以正常工作 - 但是當我運行多個芹菜工人時,我會遇到這個錯誤。
我知道我參加這個聚會已經很晚了,但也許這可以幫助其他人。
啟動芹菜工人的正確方法:
celery -A <filename containing celery object>:<celery object> worker
標准調用是:
celery -A tasks:celery worker
其中tasks.py
包含函數和 celery 對象。 Celery 將自動拾取文件中的每個任務/功能。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.