celery与django的连接问题
2025-06-06 14:05:56
在使用celery作为异步任务队列时,我遇到了Django连接不上的问题。具体来说,我已经按照网上的教程在Django的settings.py里配置好了celery的设置,写好了celery.py和tasks.py,使用docker启动celery服务时,也正常显示celery连接到了redis,但是当django调用celery的task时,却抛出了连接异常的错误。
后来,在网上看了很多错误报告的解决方式之后,我发现是因为在Django里使用celery,还需要在django的__init__.py里进行如下配置:
1 | from myapp.celery import app as celery_app |
这样才能保证在Django启动时celery能够正确被加载。借此来复习一下Python中__init__文件的用法。
__init__.py
__init__.py 是 Python 包(package)的初始化文件,它的主要作用包括:
- 标记目录为 Python 包:使 Python 将该目录视为一个可导入的包(即使文件为空)。
- 初始化包级别的代码:当该包或其子模块被导入时,
__init__.py中的代码会自动执行。 - 控制模块的导入行为:可以定义
__all__来限制from package import *时导入的内容。
在 Django 项目的 __init__.py 中添加:
1 | from myapp.celery import app as celery_app |
可以确保 Celery 应用 (celery_app) 在 Django 启动时就被加载。