![](/img/trans.png)
[英]Deleting periodic task for celery scheduler in `settings.py` will not delete the actual task
[英]Call settings.py variable while Celery task running
我有一個Django應用,需要添加Celery異步任務。 我想在任務中調用dev.py中的設置變量,例如MY_VARIABLE ='test'。 為了簡化示例,假設存在我的任務:
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:guest@localhost:5672//'
CELERY_RESULT_BACKEND = 'django-db'
# CELERY_RESULT_BACKEND = 'db+postgresql+psycopg2://postgres:mypass@myhost/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
在呼叫者中,我運行
res = test_task.delay(*args)
在芹菜終端的響應中,我收到AttributeError。
'Settings' object has no attribute 'MY_VARIABLE'
我做錯了什么? 以及如何正確地將設置變量稱為異步任務?
提前致謝!
似乎您沒有從Django設置中加載dev.py文件。 您的celery應用和任務代碼看起來確實正確。 如果您可以在加載dev.py時將其粘貼到設置中,這將對您有所幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.