簡體   English   中英

如何從django啟動遠程celery工人

[英]How to start remote celery workers from django

我正在嘗試將 django 與 celery 結合使用。

因此我遇到了autodiscover_tasks()並且我不完全確定如何使用它們。 celery 工作人員獲得其他應用程序添加的任務(在本例中為節點后端)。

到目前為止,我用它來啟動工作人員:

celery worker -Q extraction --hostname=extraction_worker

效果很好。

現在我不確定 django-celery 集成的總體思路是什么。 worker 是否仍然應該從外部啟動(例如使用上面的命令),還是應該從 django 應用程序管理和啟動?

我的 celery.py 看起來像:

# set the default Django settings module for the 'celery' program.
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'main.settings')

app = Celery('app')

app.config_from_object('django.conf:settings', namespace='CELERY')

# Load task modules from all registered Django app configs.
app.autodiscover_tasks(lambda: settings.INSTALLED_APPS)

然后我有 2 個應用程序包含一個 tasks.py 文件:

@shared_task
def extraction(total):
    return 'Task executed'

我現在如何注冊 django 來為這些任務注冊工作人員?

您只需按照記錄啟動工作進程,您不需要注冊任何其他內容

在生產環境中,您將希望在后台將 worker 作為守護進程運行 - 請參閱 Daemonization - 但對於測試和開發,能夠通過使用 celery worker manage 命令啟動 worker 實例很有用,就像你一樣d 使用 Django 的 manage.py runserver:

 celery -A proj worker -l info

有關可用命令行選項的完整列表,請使用幫助命令:

 celery help

celery 工作人員在運行時收集/注冊任務,並消耗它發現的任務

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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