【问题标题】:Django: Celery throws an error when I import Django model or function when I am using itDjango:当我在使用时导入 Django 模型或函数时,Celery 会抛出错误
【发布时间】:2020-03-14 02:55:21
【问题描述】:

我在用 Django 配置 Celery 时遇到问题。

当我尝试将这样的函数导入 Celery 文件时:

def add_proxy():
    proxy = ProxyList(timezone.now())
    proxy.save()

运行命令:

celery -A estatefilter_backend worker -l info

导致错误:

django.core.exceptions.ImproperlyConfigured:
Requested setting INSTALLED_APPS, but settings are not configured. You must either define the environment variable DJANGO_SETTINGS_MODULE or call settings.configure() before accessing settings.

我正在使用 Python 3.7.5 和 Django 2.2.7。

【问题讨论】:

  • 您是否阅读了错误信息并按照指示进行操作? python manage.py ... 将为您设置DJANGO_SETTINGS_MODULE,但celery ... 不会。

标签: python django python-3.x celery


【解决方案1】:

os.environ.setdefault() 行必须在任何可能导入 Django 模块的导入之前,例如:

from __future__ import absolute_import, unicode_literals

import os
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'estatefilter_backend.settings')

from celery import Celery
from django.conf import settings
from scrapper.add_scrape import add_proxy

app = Celery('estatefilter_backend', broker='amqp://localhost')
app.config_from_object('django.conf:settings')
app.autodiscover_tasks(lambda: settings.INSTALLED_APPS)

【讨论】:

    猜你喜欢
    • 2020-12-09
    • 1970-01-01
    • 2016-04-10
    • 1970-01-01
    • 1970-01-01
    • 2017-03-23
    • 2012-09-10
    • 1970-01-01
    • 2018-12-27
    相关资源
    最近更新 更多