簡體   English   中英

如何運行多個芹菜工人?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM