Python Django应用程序是';还没装芹菜呢

Python Django应用程序是';还没装芹菜呢,python,django,celery,Python,Django,Celery,下面的错误是什么?我不确定这是我安装的应用程序还是我的应用程序的问题。以下异常仅在运行芹菜时生成,即芹菜-demo.apps.wall.tasks worker,runserver不会生成任何错误。哪个应用程序出现了问题 Traceback (most recent call last): File "/Users/user/Documents/workspace/demo-api/env/bin/celery", line 11, in <module> sys.exi

下面的错误是什么?我不确定这是我安装的应用程序还是我的应用程序的问题。以下异常仅在运行芹菜时生成,即
芹菜-demo.apps.wall.tasks worker
,runserver不会生成任何错误。哪个应用程序出现了问题

Traceback (most recent call last):
  File "/Users/user/Documents/workspace/demo-api/env/bin/celery", line 11, in <module>
    sys.exit(main())
  File "/Users/user/Documents/workspace/demo-api/env/lib/python3.5/site-packages/celery/__main__.py", line 30, in main
    main()
  File "/Users/user/Documents/workspace/demo-api/env/lib/python3.5/site-packages/celery/bin/celery.py", line 81, in main
    cmd.execute_from_commandline(argv)
  File "/Users/user/Documents/workspace/demo-api/env/lib/python3.5/site-packages/celery/bin/celery.py", line 770, in execute_from_commandline
    super(CeleryCommand, self).execute_from_commandline(argv)))
  File "/Users/user/Documents/workspace/demo-api/env/lib/python3.5/site-packages/celery/bin/base.py", line 309, in execute_from_commandline
    argv = self.setup_app_from_commandline(argv)
  File "/Users/user/Documents/workspace/demo-api/env/lib/python3.5/site-packages/celery/bin/base.py", line 469, in setup_app_from_commandline
    self.app = self.find_app(app)
  File "/Users/user/Documents/workspace/demo-api/env/lib/python3.5/site-packages/celery/bin/base.py", line 489, in find_app
    return find_app(app, symbol_by_name=self.symbol_by_name)
  File "/Users/user/Documents/workspace/demo-api/env/lib/python3.5/site-packages/celery/app/utils.py", line 238, in find_app
    sym = imp(app)
  File "/Users/user/Documents/workspace/demo-api/env/lib/python3.5/site-packages/celery/utils/imports.py", line 101, in import_from_cwd
    return imp(module, package=package)
  File "/Users/user/Documents/workspace/demo-api/env/lib/python3.5/importlib/__init__.py", line 126, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 986, in _gcd_import
  File "<frozen importlib._bootstrap>", line 969, in _find_and_load
  File "<frozen importlib._bootstrap>", line 958, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 673, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 662, in exec_module
  File "<frozen importlib._bootstrap>", line 222, in _call_with_frames_removed
  File "/Users/user/Documents/workspace/demo-api/demo/apps/Walls/tasks.py", line 14, in <module>
    from demo.apps.Walls.redis_models import WallSchedule, WallBroadcast, UserWalls
  File "/Users/user/Documents/workspace/demo-api/demo/apps/Walls/redis_models.py", line 12, in <module>
    from demo.apps.memberships.models import Membership
  File "/Users/user/Documents/workspace/demo-api/demo/apps/memberships/models.py", line 4, in <module>
    from django.contrib.contenttypes.models import ContentType
  File "/Users/user/Documents/workspace/demo-api/env/lib/python3.5/site-packages/django/contrib/contenttypes/models.py", line 161, in <module>
    class ContentType(models.Model):
  File "/Users/user/Documents/workspace/demo-api/env/lib/python3.5/site-packages/django/db/models/base.py", line 94, in __new__
    app_config = apps.get_containing_app_config(module)
  File "/Users/user/Documents/workspace/demo-api/env/lib/python3.5/site-packages/django/apps/registry.py", line 239, in get_containing_app_config
    self.check_apps_ready()
  File "/Users/user/Documents/workspace/demo-api/env/lib/python3.5/site-packages/django/apps/registry.py", line 124, in check_apps_ready
    raise AppRegistryNotReady("Apps aren't loaded yet.")
django.core.exceptions.AppRegistryNotReady: Apps aren't loaded yet.
回溯(最近一次呼叫最后一次):
文件“/Users/user/Documents/workspace/demo-api/env/bin/芹菜”,第11行,在
sys.exit(main())
文件“/Users/user/Documents/workspace/demo-api/env/lib/python3.5/site-packages/cellery/_-main.py”,第30行,在main中
main()
文件“/Users/user/Documents/workspace/demo-api/env/lib/python3.5/site-packages/celery/bin/celery.py”,第81行,主文件
cmd.从命令行(argv)执行命令
文件“/Users/user/Documents/workspace/demo-api/env/lib/python3.5/site-packages/celery/bin/celery.py”,第770行,从命令行执行
超级(CeleryCommand,self)。从命令行(argv)执行命令)
文件“/Users/user/Documents/workspace/demo-api/env/lib/python3.5/site-packages/芹菜/bin/base.py”,第309行,从命令行执行
argv=self.setup\u app\u from\u命令行(argv)
文件“/Users/user/Documents/workspace/demo-api/env/lib/python3.5/site-packages/芹菜/bin/base.py”,第469行,位于安装程序应用程序中,来自命令行
self.app=self.find_应用程序(app)
文件“/Users/user/Documents/workspace/demo-api/env/lib/python3.5/site-packages/芹菜/bin/base.py”,第489行,在find_应用程序中
返回find\u app(app,symbol\u by\u name=self.symbol\u by\u name)
文件“/Users/user/Documents/workspace/demo-api/env/lib/python3.5/site-packages/芹菜/app/utils.py”,第238行,在find_应用程序中
sym=imp(应用程序)
文件“/Users/user/Documents/workspace/demo-api/env/lib/python3.5/site-packages/芹菜/utils/imports.py”,第101行,从cwd导入
返回imp(模块,包=包)
文件“/Users/user/Documents/workspace/demo-api/env/lib/python3.5/importlib/_init__uuu.py”,第126行,在导入模块中
return _bootstrap._gcd_import(名称[级别:],包,级别)
文件“”,第986行,在_gcd_import中
文件“”,第969行,在“查找”和“加载”中
文件“”,第958行,在“查找”和“加载”中解锁
文件“”,第673行,在“加载”中
exec_模块中第662行的文件“”
文件“”,第222行,在已删除帧的调用中
文件“/Users/user/Documents/workspace/demo-api/demo/apps/Walls/tasks.py”,第14行,在
从demo.apps.Walls.redis_模型导入WallSchedule、WallBroadcast和UserWalls
文件“/Users/user/Documents/workspace/demo api/demo/apps/Walls/redis_models.py”,第12行,在
从demo.apps.memberships.models导入成员资格
文件“/Users/user/Documents/workspace/demo-api/demo/apps/memberships/models.py”,第4行,在
从django.contrib.contenttypes.models导入ContentType
文件“/Users/user/Documents/workspace/demo-api/env/lib/python3.5/site-packages/django/contrib/contenttypes/models.py”,第161行,在
类ContentType(models.Model):
文件“/Users/user/Documents/workspace/demo-api/env/lib/python3.5/site-packages/django/db/models/base.py”,第94行,新__
app\u config=apps.get\u包含app\u config(模块)
文件“/Users/user/Documents/workspace/demo-api/env/lib/python3.5/site-packages/django/apps/registry.py”,第239行,在包含应用程序配置的get_中
self.check_apps_ready()
文件“/Users/user/Documents/workspace/demo-api/env/lib/python3.5/site-packages/django/apps/registry.py”,第124行,在check\u-apps\u-ready中
raise AppRegistryNotReady(“应用程序尚未加载。”)
django.core.exceptions.AppRegistryNotReady:尚未加载应用程序。

运行
manage.py check
正常。

正常-发布芹菜应用程序文件后,我将其与我所拥有的进行比较,并尝试运行。我想我发现了你的问题-看起来你在调用芹菜中的tasks.py-demo.apps.wall.tasks

如果您的wall模块包含芹菜.py和tasks.py,您应该调用
芹菜-demo.apps.wall

以下是我的目录结构和我运行的芹菜命令:

django_project
- an_app
- celery_tasks
   - init.py
   - celery_app.py (celery.py in your case)
   - tasks.py

我运行的命令:django_项目目录中的芹菜工作者-芹菜任务。

尝试将其添加到
任务.py的开头:

import django
django.setup()

出现异常
AppRegistryNotReady:应用程序未加载的主要原因是,如果您尝试导入应用程序中的任何文件,则在初始化芹菜应用程序之前

不要尝试在芹菜.py中导入tasks.py或像这样传递task.py函数
app.autodiscover\u任务(task1)

最佳做法是在tasks.py中使用
@shared_task

并将
app.autodiscover\u tasks()保留为空。
这是

此外,如果无法将模型导入tasks.py,
1.检查您的芹菜.py是否清晰,没有任何应用程序文件导入。

2.不要将参数传递给autodiscover_tasks()(不必要的参数)autodiscover_tasks()(自动搜索
@shared_tasks

一种可能的情况是在文件顶部导入模型。将这些导入移动到您使用它们的方法/func。

芹菜文件是什么样子的-您是否在其中设置了Django设置?这不是Django本身的问题(这就是为什么manage.py检查很好)。@JensAstrup我会在一秒钟后发布芹菜任务文件:谢谢你使用的是哪个版本的Django?你从以前的版本升级了吗?当我调用
芹菜-demo.apps.芹菜工人时,我得到一个导入错误<代码>导入错误:没有名为“memberships”的模块
,但芹菜.py不导入成员身份,这很奇怪。在我更新Django之前,这些都是有效的。我想有些东西注册不正确。你得到的完整追踪是什么?它应该显示您尝试导入的位置/出错的位置。celery.py模块不应调用
django.setup(),
当工作程序启动时,它由“django fixups”处理。升级到celery 4和django 1.10后,我只能使用此命令使任务再次工作。此di