Django:当我导入 Django 模型或函数时,Celery 抛出错误

Django: Celery throws an error when I import Django model or function when I am using it

我在使用 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。

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)