gpt4 book ai didi

python - Django + celery : ImportError: No module named project. 网址

转载 作者:太空宇宙 更新时间:2023-11-03 14:44:30 24 4
gpt4 key购买 nike

当我使用此命令启动使用 Django 和 Celery 的工作程序时(我在 d 目录中执行命令):

celery -A e.project.celery:app worker -l info

File "/Users/.../..../e/venv/lib/python2.7/site-packages/celery-4.2.0-py2.7.egg/celery/loaders/base.py", line 108, in import_default_modules
raise response

ImportError: No module named project.urls

我在 Python 2.7 中使用 Django 1.11 和 Celery 4.2。

下面是我的项目结构,其中包含一些应该有助于调试的文件内容。

Django 结构:

d/
__init__.py
e/
__init__.py
core/
__init__.py
app1/
__init__.py
tasks.py
project/ (project stuff)
__init__.py
celery.py
settings.py
urls.py
context_processors.py
wsgi.py
manage.py
setup.py

settings.py:

INSTALLED_APPS = [
'...',
'django_celery_results',
'django_celery_beat'
]


CELERY_RESULT_BACKEND = 'django-db'
CELERY_BROKER_URL = 'redis://foo:foo@127.0.0.1:6599/1'
CELERY_CELERYBEAT_SCHEDULER = 'django_celery_beat.schedulers:DatabaseScheduler'

e/project/__init__.py:

from __future__ import absolute_import, unicode_literals

from e.project.celery import app as celery_app

__all__ = ('celery_app', )

e/project/celery.py:

from __future__ import absolute_import, unicode_literals
import os
import sys
from celery import Celery

# set the default Django settings module for the 'celery' program.
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "e.project.settings")

app = Celery('e_tasks')

# Using a string here means the worker doesn't have to serialize
# the configuration object to child processes.
# - namespace='CELERY' means all celery-related configuration keys
# should have a `CELERY_` prefix.
app.config_from_object('django.conf:settings', namespace='CELERY')

# Load task modules from all registered Django app configs.
app.autodiscover_tasks()

if __name__ == '__main__':
app.start()

d/e/core/app1/tasks.py:

from celery import shared_task


@shared_task
def hello_world_task():
print('Hello world')

我的 manage.py 文件:

#!/usr/local/bin/python2.7

import os
import sys

if __name__ == "__main__":
sys.path.append(os.path.join(os.path.dirname(os.path.abspath(__file__)), 'e'))

os.environ.setdefault("DJANGO_SETTINGS_MODULE", "e.project.settings")

try:
from django.core.management import execute_from_command_line
except ImportError:
# The above import may fail for some other reason. Ensure that the
# issue is really that Django is missing to avoid masking other
# exceptions on Python 2.
try:
import django
except ImportError:
raise ImportError(
"Couldn't import Django. Are you sure it's installed and "
"available on your PYTHONPATH environment variable? Did you "
"forget to activate a virtual environment?"
)
raise
execute_from_command_line(sys.argv)

最佳答案

正如问题评论中所述,我看到您在导入语句中使用了 e.project.celerye.project.settings,但是错误说找不到 project.urls(开头没有 e.)。

您是如何定义 ROOT_URLCONF 设置的?也许这是导致问题的原因。

关于python - Django + celery : ImportError: No module named project. 网址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50846548/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com