簡體   English   中英

在Celery任務運行時調用settings.py變量

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

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