修改的文件
文件 | 作用(详情看代码) | 备注 |
---|---|---|
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
定时任务配置成功