修改的文件
| 文件 | 作用(详情看代码) | 备注 |
|---|---|---|
proj/__init__.py | 导入celery.py中的app,来保证只要django启动就可以用这个app执行shared_task | |
proj/celery.py | 创建一个celery app,以项目名命名 | |
proj/settings.py | 主要配置三项东西INSTALLED_APP,BROKER_URL和序列器配置 | 或者改你指定的配置文件 |
demoapp/tasks.py | 本文有一些shared_task在里面 |
CODE
我是参考这里 - > 官方最佳实践
proj/__init__.py
- 1
- 2
- 1
- 2
proj/celery.py
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
proj/prod_settings.py
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
demoapp/tasks.py
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
注意
如果INSTALLED_APP里面注册app是demoapp,那么celery任务在import的时候要用(也就是.tasks前面保持一致)
- 1
- 1
的方式,不然会出现奇怪的错误
使用
首先启动worker
- 1
- 2
- 1
- 2
然后试着执行shared_task add()
- 1
- 2
- 1
- 2
也就是在django环境中执行:
- 1
- 2
- 1
- 2
上面的worker log中出现add()的return也就是16
说明celery配置完成
django-celery的定时任务功能
说白了就是celery beat定时或者定间隔给celery发送task
只需配置一项:
- 1
- 2
- 1
- 2
然后
- 1
- 1
然后后台配置任务执行间隔
再然后:
- 1
- 1
可以看到celery beat开始按之前admin后台设置的时间间隔或者crontab开始发送task给celery了,此时自然也需要celery worker在running状态
celery beat发送的任务return的结果在celery log中可以看到
说明django-celery 定时任务配置成功
本文详细介绍了如何在Django项目中集成Celery,实现异步任务处理及定时任务功能。通过具体步骤和示例代码,展示了配置Celery、运行worker、执行异步任务的过程,并介绍了如何设置定时任务。
562

被折叠的 条评论
为什么被折叠?



