首页 > 解决方案 > 在 celery 任务中使用 django 模型

问题描述

我有一个用例,我需要在标准项目的文件中导入一些django模型。celery.pydjango-celery

我的项目如下所示:

|-- backend
|   |-- backend
|   |   |-- __init__.py
|   |   |-- celery.py
|   |   |-- settings.py
|   |   |-- urls.py
|   |   `-- wsgi.py
|   |-- bobbers
|   |   |-- __init__.py
|   |   |-- admin.py
|   |   |-- apps.py
|   |   |-- models.py
|   |   |-- serializers.py
|   |   |-- tests.py
|   |   |-- urls.py
|   |   `-- views.py
|   |-- manage.py
|   |-- requirements.txt

celery 相关文件(backend/backend/__init__.py和)的所有内容与官方文档backend/backend/celery.py中的完全一致。

但是,一旦我将该行添加import bobbers.models as bobber_models到我的文件中,我就会通过以下堆栈跟踪celery.py得到臭名昭著的错误:AppRegistryNotReady

  File "/usr/local/lib/python3.7/site-packages/django/db/models/base.py", line 87, in __new__
    app_config = apps.get_containing_app_config(module)
  File "/usr/local/lib/python3.7/site-packages/django/apps/registry.py", line 249, in get_containing_app_config
    self.check_apps_ready()
  File "/usr/local/lib/python3.7/site-packages/django/apps/registry.py", line 132, in check_apps_ready
    raise AppRegistryNotReady("Apps aren't loaded yet.")
django.core.exceptions.AppRegistryNotReady: Apps aren't loaded yet.

不用说,如果我删除导入,一切顺利。

那么如何django在编写celery任务的同一个文件中安全地导入模型呢?

标签: pythondjango-celery

解决方案


推荐阅读