我以前从未使用过芹菜,并试图正确配置它。我将Redis用作经纪人,并在Heroku上托管。这是我第一次试图执行异步任务,而我正在挣扎。我有一个我想定期运行的管理命令。
芹菜.py
from __future__ import absolute_import, unicode_literals
import os
import celery
from celery import Celery
import django
from django.conf import settings
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'coffee.settings')
app = Celery('coffee')
app.config_from_object('django.conf:settings', namespace = 'CELERY')
app.autodiscover_tasks(lambda: settings.INSTALLED_APPS)
@app.task(bind= True)
def debug_task(self):
print('Request: {0!r}'.format(self.request))
app.conf.beat_schedule = {
'add-every-30-seconds':{
'task': 'inventory.tasks.boarshead',
'schedule' : 30.0,
'args' : ()
},
}
settings.py
CACHES = {
"default": {
"BACKEND": "redis_cache.RedisCache",
"LOCATION": os.environ.get('REDIS_URL'),
}
}
tasks.py
from celery import shared_task
import celery
import time
from django.core import management
@celery.task
def boarshead():
try:
print("in celery module")
"""Boarshead expired sessions by using Django Management Command."""
management.call_command("clearsessions", verbosity=0)
CreateBoarsHeadList.py
return "success"
except:
print(e)
init .py
from __future__ import absolute_import, unicode_literals
from .celery import app as celery_app
procfile
worker: celery worker --app=tasks.inventory.app
在芹菜 兔子上(和redis,多年来不用用作后端(,您将需要一个" web"(django(的proc文件,而一个工人则没有看到列出。Worker/Dyno分配允许使用和访问管理功能。这是我的一个应用程序中的procfile:
web: gunicorn SOME_APP.wsgi --log-file -
worker: celery worker -A QUEUE_APP_NAME -l info --without-gossip --without-mingle --without-heartbeat
QUEUE_APP_NAME
是我所有芹菜工作和代码的模块(应用程序(的名称。worker
在QUEUE_APP_NAME
模块(DIR(中通过procfile调用,与芹菜文件相似。可能无法解决您,但是让芹菜工作是一场缓慢的战斗。