私はDjangoアプリを持っており、Celery非同期タスクを追加する必要があります。私は、例えばMY_VARIABLE = 'test'のようなdev.pyの設定変数をタスクに呼びたいと思います。Celeryタスクの実行中にsettings.py変数を呼び出す
from django.conf import settings
@shared_task
def test_task():
return settings.MY_VARIABLE
経由セロリの労働者をruningている間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'
のように見えます
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'proj.settings.dev')
app = Celery('proj')
app.config_from_object('django.conf:settings', namespace='CELERY')
app.autodiscover_tasks()
ように私のcelery.pyが見えます:例を簡素化するためには、私の仕事があることを前提としています
export DJANGO_SETTINGS_MODULE=proj.settings.dev
celery -A proj worker -l info
呼び出した呼び出し元
セロリ端末の応答で、私はAttributeErrorを受け取りました。
'Settings' object has no attribute 'MY_VARIABLE'
私は間違っていますか?そして、私はどのように正しく変数を非同期タスクに変えることができますか?
ありがとうございます!
あなたのcelery.pyの外観は – iklinac
です@iklinac質問にcelery.pyを追加しました – sorryMike