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