我有一个Django应用程序,并且需要添加一个Celery异步任务。我想从dev.py中调用一个设置变量,例如MY_VARIABLE ='test'。为了简化的例子,假设有我的任务:在运行Celery任务时调用settings.py变量
from django.conf import settings
@shared_task
def test_task():
return settings.MY_VARIABLE
我celery.py看起来像
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'proj.settings.dev')
app = Celery('proj')
app.config_from_object('django.conf:settings', namespace='CELERY')
app.autodiscover_tasks()
的dev.py看起来像
CELERY_BROKER_URL = 'amqp://guest:[email protected]:5672//'
CELERY_RESULT_BACKEND = 'django-db'
# CELERY_RESULT_BACKEND = 'db+postgresql+psycopg2://postgres:[email protected]/postgres'
CELERY_ACCEPT_CONTENT = ['json']
CELERY_TASK_SERIALIZER = 'json'
MY_VARIABLE='test'
虽然通过乳宁芹菜工人
export DJANGO_SETTINGS_MODULE=proj.settings.dev
celery -A proj worker -l info
in the来电我跑
res = test_task.delay(*args)
在芹菜终端响应我收到AttributeError。
'Settings' object has no attribute 'MY_VARIABLE'
我在做什么错了?以及我可以如何正确调用异步任务的设置变量?
在此先感谢!
你的celery.py看起来像什么 – iklinac
@iklinac我将celery.py添加到问题 – sorryMike