I’m seeing the following error when I run my Celery docker container with the following command
$ celery -A zen_api.zen_api worker --loglevel INFO
celery | Traceback (most recent call last):
celery | File "/venv/bin/celery", line 8, in <module>
celery | sys.exit(main())
celery | ^^^^^^
celery | File "/venv/lib/python3.12/site-packages/celery/__main__.py", line 15, in main
celery | sys.exit(_main())
celery | ^^^^^^^
celery | File "/venv/lib/python3.12/site-packages/celery/bin/celery.py", line 236, in main
celery | return celery(auto_envvar_prefix="CELERY")
celery | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
celery | File "/venv/lib/python3.12/site-packages/click/core.py", line 1157, in __call__
celery | return self.main(*args, **kwargs)
celery | ^^^^^^^^^^^^^^^^^^^^^^^^^^
celery | File "/venv/lib/python3.12/site-packages/click/core.py", line 1078, in main
celery | rv = self.invoke(ctx)
celery | ^^^^^^^^^^^^^^^^
celery | File "/venv/lib/python3.12/site-packages/click/core.py", line 1688, in invoke
celery | return _process_result(sub_ctx.command.invoke(sub_ctx))
celery | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
celery | File "/venv/lib/python3.12/site-packages/click/core.py", line 1434, in invoke
celery | return ctx.invoke(self.callback, **ctx.params)
celery | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
celery | File "/venv/lib/python3.12/site-packages/click/core.py", line 783, in invoke
celery | return __callback(*args, **kwargs)
celery | ^^^^^^^^^^^^^^^^^^^^^^^^^^^
celery | File "/venv/lib/python3.12/site-packages/click/decorators.py", line 33, in new_func
celery | return f(get_current_context(), *args, **kwargs)
celery | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
celery | File "/venv/lib/python3.12/site-packages/celery/bin/base.py", line 135, in caller
celery | return f(ctx, *args, **kwargs)
celery | ^^^^^^^^^^^^^^^^^^^^^^^
celery | File "/venv/lib/python3.12/site-packages/celery/bin/worker.py", line 348, in worker
celery | worker = app.Worker(
celery | ^^^^^^^^^^^
celery | File "/venv/lib/python3.12/site-packages/celery/worker/worker.py", line 93, in __init__
celery | self.app.loader.init_worker()
celery | File "/venv/lib/python3.12/site-packages/celery/loaders/base.py", line 110, in init_worker
celery | self.import_default_modules()
celery | File "/venv/lib/python3.12/site-packages/celery/loaders/base.py", line 104, in import_default_modules
celery | raise response
celery | File "/venv/lib/python3.12/site-packages/celery/utils/dispatch/signal.py", line 276, in send
celery | response = receiver(signal=self, sender=sender, **named)
celery | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
celery | File "/venv/lib/python3.12/site-packages/celery/fixups/django.py", line 100, in on_import_modules
celery | self.worker_fixup.validate_models()
celery | File "/venv/lib/python3.12/site-packages/celery/fixups/django.py", line 138, in validate_models
celery | self.django_setup()
celery | File "/venv/lib/python3.12/site-packages/celery/fixups/django.py", line 134, in django_setup
celery | django.setup()
celery | File "/venv/lib/python3.12/site-packages/django/__init__.py", line 24, in setup
celery | apps.populate(settings.INSTALLED_APPS)
celery | File "/venv/lib/python3.12/site-packages/django/apps/registry.py", line 91, in populate
celery | app_config = AppConfig.create(entry)
celery | ^^^^^^^^^^^^^^^^^^^^^^^
celery | File "/venv/lib/python3.12/site-packages/django/apps/config.py", line 193, in create
celery | import_module(entry)
celery | File "/usr/local/lib/python3.12/importlib/__init__.py", line 90, in import_module
celery | return _bootstrap._gcd_import(name[level:], package, level)
celery | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
celery | File "<frozen importlib._bootstrap>", line 1387, in _gcd_import
celery | File "<frozen importlib._bootstrap>", line 1360, in _find_and_load
celery | File "<frozen importlib._bootstrap>", line 1310, in _find_and_load_unlocked
celery | File "<frozen importlib._bootstrap>", line 488, in _call_with_frames_removed
celery | File "<frozen importlib._bootstrap>", line 1387, in _gcd_import
celery | File "<frozen importlib._bootstrap>", line 1360, in _find_and_load
celery | File "<frozen importlib._bootstrap>", line 1324, in _find_and_load_unlocked
celery | ModuleNotFoundError: No module named 'zen_api.v1'
My Django project has this structure.
/zen_api
manage.py
/zen_api
/v1
/app1
/app2
__init__.py
celery.py
settings.py
The contents of __init__.py
is
from .celery import app as celery_app
__all__ = ("celery_app",)
and the contents of celery.py
is
import os
from celery import Celery
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "zen_api.zen_api.settings")
app = Celery(
"zen_api.zen_api",
)
app.config_from_object("django.conf:settings", namespace="CELERY")
app.autodiscover_tasks()
@app.task(bind=True, ignore_result=True)
def debug_task(self):
print(f"Request: {self.request!r}")
How come I am getting this error?