Celery Django:启动worker ImportError:没有名为XXX的模块

2024-03-29 10:06:46 发布

您现在位置:Python中文网/ 问答频道 /正文

我很难让芹菜工人干活。在

exemple here工作正常,不需要文档。在

我的问题是,我真正的配置文件夹结构是这样的:

djangosite/
 |-- package/
 |    |-- __init__.py
 |    |-- laboratory/
 |    |    |-- __init__.py
 |    |    |-- migrations/
 |    |    |-- templates/
 |    |    |-- apps.py
 |    |    |-- models.py
 |    |    +-- views.py
 |-- mysite/
 |    |-- __init__.py
 |    |-- settings.py
 |    |-- urls.py
 |    |-- celery.py
 |    +-- wsgi.py
 |-- manage.py

当示例在文件夹中显示应用程序时,My app是package的子文件夹。 mysite文件夹的

^{pr2}$

芹菜.py包含:

os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'mysite.settings')

app = Celery('celery_app')
# This reads, e.g., CELERY_ACCEPT_CONTENT = ['json'] from settings.py:
app.config_from_object('django.conf:settings')

# For autodiscover_tasks to work, you must define your tasks in a file called 'tasks.py'.
app.autodiscover_tasks(lambda: settings.INSTALLED_APPS)


@app.task(bind=True)
def debug_task(self):
    print("Request: {0!r}".format(self.request))

我启动: celery worker -l info -A mysite

芹菜找不到laboratory模块:

Traceback (most recent call last):
  File "C:\Python27\Lib\runpy.py", line 174, in _run_module_as_main
    "__main__", fname, loader, pkg_name)
  File "C:\Python27\Lib\runpy.py", line 72, in _run_code
    exec code in run_globals
  File "D:\Developpements\VirtualEnv\laboProd\Scripts\celery.exe\__main__.py", line 9, in <module>
  File "d:\developpements\virtualenv\laboprod\lib\site-packages\celery\__main__.py", line 30, in main
    main()
  File "d:\developpements\virtualenv\laboprod\lib\site-packages\celery\bin\celery.py", line 81, in main
    cmd.execute_from_commandline(argv)
  File "d:\developpements\virtualenv\laboprod\lib\site-packages\celery\bin\celery.py", line 793, in execute_from_commandline
    super(CeleryCommand, self).execute_from_commandline(argv)))
  File "d:\developpements\virtualenv\laboprod\lib\site-packages\celery\bin\base.py", line 311, in execute_from_commandline
    return self.handle_argv(self.prog_name, argv[1:])
  File "d:\developpements\virtualenv\laboprod\lib\site-packages\celery\bin\celery.py", line 785, in handle_argv
    return self.execute(command, argv)
  File "d:\developpements\virtualenv\laboprod\lib\site-packages\celery\bin\celery.py", line 717, in execute
    ).run_from_argv(self.prog_name, argv[1:], command=argv[0])
  File "d:\developpements\virtualenv\laboprod\lib\site-packages\celery\bin\worker.py", line 179, in run_from_argv
    return self(*args, **options)
  File "d:\developpements\virtualenv\laboprod\lib\site-packages\celery\bin\base.py", line 274, in __call__
    ret = self.run(*args, **kwargs)
  File "d:\developpements\virtualenv\laboprod\lib\site-packages\celery\bin\worker.py", line 212, in run
    state_db=self.node_format(state_db, hostname), **kwargs
  File "d:\developpements\virtualenv\laboprod\lib\site-packages\celery\worker\__init__.py", line 95, in __init__
    self.app.loader.init_worker()
  File "d:\developpements\virtualenv\laboprod\lib\site-packages\celery\loaders\base.py", line 128, in init_worker
    self.import_default_modules()
  File "d:\developpements\virtualenv\laboprod\lib\site-packages\celery\loaders\base.py", line 116, in import_default_modules
    signals.import_modules.send(sender=self.app)
  File "d:\developpements\virtualenv\laboprod\lib\site-packages\celery\utils\dispatch\signal.py", line 166, in send
    response = receiver(signal=self, sender=sender, **named)
  File "d:\developpements\virtualenv\laboprod\lib\site-packages\celery\fixups\django.py", line 73, in on_import_modules
    self.worker_fixup.validate_models()
  File "d:\developpements\virtualenv\laboprod\lib\site-packages\celery\fixups\django.py", line 158, in validate_models
    django_setup()
  File "d:\developpements\virtualenv\laboprod\lib\site-packages\django\__init__.py", line 27, in setup
    apps.populate(settings.INSTALLED_APPS)
  File "d:\developpements\virtualenv\laboprod\lib\site-packages\django\apps\registry.py", line 85, in populate
    app_config = AppConfig.create(entry)
  File "d:\developpements\virtualenv\laboprod\lib\site-packages\django\apps\config.py", line 94, in create
    module = import_module(entry)
  File "C:\Python27\Lib\importlib\__init__.py", line 37, in import_module
    __import__(name)
ImportError: No module named laboratory

如何解决这个问题?我需要把我的应用程序放在django根文件夹吗?在


Tags: inpyselfappvirtualenvinitlibpackages