python Django中使用Celery

简单的教程:
简要说明:

始终明确的是: 
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

原文地址:https://www.cnblogs.com/amize/p/13387297.html