简单的教程:
简要说明:
始终明确的是:
Celery是Python的第三方库,它可以用于是任何的Python的项目中,因为我们始终可以把Celery看成一个独立的模块去操纵其它的模块。因此,我们也可以在Django项目中使用的Celery,但值得注意的是,在Django中使用Celery的方式有两种:
仅使用Celery。
同时使用Celery + djcelery .
方法1: 相当于中Django中加入了一个Celery的任务脚本,为了操纵Django,因此需要额外在Celery中配置Django环境,才能操作Django的数据库。
方法2: 由于使用了djcelery,可以在任务中方便的直接操作Django数据库,而且最终的任务可以在Django的后台中查看和修改相关的任务。
两种方法的选择:
从上面的描述看,方法1比方法2少引入一个djcelery模块,缺点是需要自己配置与Django结合的环境。而方法2,比较方便省心,还能在Django后台管理自己的任务。因此如果你在Django中使用Celery,我强烈推荐方法2。
这两种方法我都写了相应的博文。此篇博文讲述了使用djcelery的方法2,至于不用的djcelery仅仅使用Celery模块的方法1,请参考我的另一篇博文:
Django中使用Celery实现定时任务(不使用djcelery)
但它们本质上是一样的。
https://www.cnblogs.com/wumingxiaoyao/p/8521567.html
https://www.cnblogs.com/wdliu/p/9530219.html (主要)
https://zhuanlan.zhihu.com/p/42840629 (djcelery.setup_loader() 作用,python manage.py help 发现多出了 celery 相关选项。)
# 下面的命令django_celery_beat是第三方模块可以这样使用
# 方法1
python manage.py migrate django_celery_beat
#启动方法 celery beat -A djcelery_test --loglevel=info --scheduler django_celery_beat.schedulers:DatabaseScheduler
# 方法2
python manage.py migrate djcelery #这个模块包含了上面的
#启动方法 celery beat -A djcelery_test --loglevel=info
# 创建超级用户前记得产生用户表
python manage.py migrate
# 产生超级用户
python3 manage.py createsuperuser
windows环境下,虽然显示接收到了任务,却一直不执行的问题:
https://www.distributedpython.com/2018/08/21/celery-4-windows/
遇到定时任务无法执行
https://stackoverflow.com/questions/46913392/celery-beat-not-picking-up-periodic-tasks
https://github.com/celery/celery/issues/4184
namespace设置为CELERY的意思
https://www.jianshu.com/p/173070bcdfaf