2016-09-24 36 views
2

什么是给出下面的错误?我不确定这是否是我安装的应用程序或我的一个应用程序的问题。下面的例外情况仅在运行Celery时产生,即celery -A demo.apps.wall.tasks worker,runserver不会产生任何错误。哪个应用程序是这个问题?Django应用程序尚未加载芹菜任务

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. 

运行manage.py check是确定的。

+0

什么是您的芹菜文件的样子 - 你设置里面Django的设置?这对于Django本身并不是问题(这就是manage.py检查很好的原因)。 –

+0

@JensAstrup我将在一秒钟后发布芹菜任务文件:谢谢 – Prometheus

+0

您使用的是哪个版本的Django?你从以前的版本升级? – borfast

回答

1

好的 - 发布你的芹菜应用程序文件后,我比较我所拥有的并尝试运行。 认为我发现你的问题 - 它看起来像你在celery -A demo.apps.wall.tasks调用tasks.py。

如果您的墙模块包含celery.py和tasks.py - 您应该拨打celery -A demo.apps.wall

这里的目录结构我有,和芹菜命令我运行:

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

我运行的命令:celery worker -A celery_tasks从django_project目录。

+0

当我调用'celery -A demo.apps.celery worker'时,出现导入错误。 'ImportError:没有名为'memberships'的模块,但是celery.py不会导入成员资格,这很奇怪。直到我更新Django之前,这一切都在运行。我认为有些东西没有正确注册。 – Prometheus

+0

你得到的全部回溯是什么?它应该显示你想要导入的位置/错误的位置。 –

4

尝试增加这的tasks.py开头:

import django 
django.setup() 
+0

celery.py模块不应该调用django.setup(),它在worker启动时由“django fixups”处理。 – Prometheus

+1

升级到Celery 4和Django 1.10之后,我只能使用这个工具重新获得工作。 – acidjunk

+0

这不适合我。这只会导致错误“RuntimeError:populate()不可重入” – Cerin

相关问题