You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VPS部署Django时Celery与Gunicorn冲突:无法导入Celery

Django + Gunicorn启动时Celery导入错误解决指南

问题详情

执行命令 gunicorn project.wsgi 启动Django项目时,触发以下Celery导入错误:

[2024-03-17 08:39:59 -0400] [12173] [INFO] Starting gunicorn 20.0.4
[2024-03-17 08:39:59 -0400] [12173] [INFO] Listening at: http://127.0.0.1:8000 (12173)
[2024-03-17 08:39:59 -0400] [12173] [INFO] Using worker: sync
[2024-03-17 08:39:59 -0400] [12176] [INFO] Booting worker with pid: 12176
[2024-03-17 08:39:59 -0400] [12176] [ERROR] Exception in worker process
Traceback (most recent call last):
  File "/usr/lib/python3.7/site-packages/gunicorn/arbiter.py", line 583, in spawn_worker
    worker.init_process()
  File "/usr/lib/python3.7/site-packages/gunicorn/workers/base.py", line 119, in init_process
    self.load_wsgi()
  File "/usr/lib/python3.7/site-packages/gunicorn/workers/base.py", line 144, in load_wsgi
    self.wsgi = self.app.wsgi()
  File "/usr/lib/python3.7/site-packages/gunicorn/app/base.py", line 67, in wsgi
    self.callable = self.load()
  File "/usr/lib/python3.7/site-packages/gunicorn/app/wsgiapp.py", line 49, in load
    return self.load_wsgiapp()
  File "/usr/lib/python3.7/site-packages/gunicorn/app/wsgiapp.py", line 39, in load_wsgiapp
    return util.import_app(self.app_uri)
  File "/usr/lib/python3.7/site-packages/gunicorn/util.py", line 358, in import_app
    mod = importlib.import_module(module)
  File "/usr/lib/python3.7/importlib/__init__.py", line 127, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 1006, in _gcd_import
  File "<frozen importlib._bootstrap>", line 983, in _find_and_load
  File "<frozen importlib._bootstrap>", line 953, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
  File "<frozen importlib._bootstrap>", line 1006, in _gcd_import
  File "<frozen importlib._bootstrap>", line 983, in _find_and_load
  File "<frozen importlib._bootstrap>", line 967, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 677, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 728, in exec_module
  File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
  File "/root/reg_project/registration/project/__init__.py", line 2, in <module>
    from .celery import app as celery_app
  File "/root/reg_project/registration/project/celery.py", line 3, in <module>
    from celery import Celery
ImportError: cannot import name 'Celery' from 'celery' (/usr/lib/python3.7/site-packages/celery/__init__.py)
[2024-03-17 08:39:59 -0400] [12176] [INFO] Worker exiting (pid: 12176)
[2024-03-17 08:39:59 -0400] [12173] [INFO] Shutting down: Master
[2024-03-17 08:39:59 -0400] [12173] [INFO] Reason: Worker failed to boot.

项目根目录下的__init__.py代码:

from __future__ import absolute_import, unicode_literals
from .celery import app as celery_app

__all__ = ['celery_app']

已激活虚拟环境,安装了所有依赖,Celery版本为4.4.7,Gunicorn已安装。


解决步骤

1. 确认虚拟环境激活状态

系统可能默认使用全局Python环境,执行以下命令验证:

which python
pip list | grep celery
  • 确保which python输出的路径指向虚拟环境内的Python可执行文件
  • pip list显示的Celery版本应为4.4.7
    如果不符,重新激活虚拟环境:
# 替换为你的虚拟环境目录路径
source venv/bin/activate

2. 重新安装Celery

虚拟环境内的Celery包可能损坏或安装不完整,执行卸载重装:

pip uninstall celery -y
pip install celery==4.4.7

3. 修复同名文件冲突

项目内的celery.py文件会与第三方Celery库的包名冲突,导致Python优先导入本地文件而非系统库:

  • 将项目中的celery.py重命名为celery_app.py
  • 修改__init__.py中的导入语句:
from __future__ import absolute_import, unicode_literals
from .celery_app import app as celery_app

__all__ = ['celery_app']

4. 指定虚拟环境的Python启动Gunicorn

确保Gunicorn使用虚拟环境内的解释器,避免全局环境干扰:

# 激活虚拟环境后执行
python -m gunicorn project.wsgi

内容的提问来源于stack exchange,提问作者Barbod Imani

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 22:09:56