• Celery异步调度框架(二)与Django结合使用


    配置Celery与Django结合

    需要安装的插件

    # 用于在Django中执行任务
    pip install django-celery-beat
    # 这个是把任务执行结果保存到django-orm中也就是数据库中的插件
    pip install django-celery-results
    # 集成到Django admin中的Celery管理插件
    pip install django-celery-admin
    

    创建celery.py文件

    在settings.py同级目录下创建celery.py文件,用于创建celery实例

    这里设置环境变量可以有另外一种非硬编码的方式

    修改__init__.py文件

    修改settings.py文件

    创建任务

    我这里新建了一个app叫做mytasks,其实你在任意现有的app下面建立tasks.py文件都可以。在settings.py文件中的INSTALLED_APPS中把我新建的mytasks安装进来。

    调度任务

    在mysite这个APP中调用任务

    启动worker和Django

    进入到项目目录也就是和manage.py的同级目录,命令中写的DjangoDemo是项目名称。为什么写这个名字?其实和之前启动worker是一样的,因为在DjangoDemo中有一个叫做celery.py的文件,如果不叫这个文件就需要DjangoDemo.文件来指定Celery的APP入口文件。

    启动Django进行调用

    使用Django数据库保存执行结果

    修改settings.py文件

    再次去调用之前的URL你就会发现数据库有结果,这意味着你以后可以通过task_id从数据库中查询结果。

    配置定时任务

    在配置文件中写定时任务

    启动worker

    启动beat服务

    在worker上查看结果

    其实这里可以看出我这里根本没有启动Django或者说这里跟Django没有什么关系。因为Celery本身也不依赖Django.

    通过Web形式配置定时任务

    这种形式就需要用到Django了

    这里用到了一个新的APP也就是之前需要安装的django_celery_beat

    做数据迁移操作

    启动Django并打开admin后台

    Crontabs就是做计划任务的
    Intervals是简单的定时任务,比如每个几秒或者几分钟这种周期性任务
    Periodic tasks要执行的任务在这里配置

    添加任务

    配置好之后启动worker

    启动beat服务,这里需要增加一个参数函数是使用数据库中的任务调度配置

    celery -A DjangoDemo beat -l info --scheduler django_celery_beat.schedulers:DatabaseScheduler
    

    在worker中查看结果

    需要注意的是每次修改数据库的定时任务执行配置你都需要重启beat服务,否则它无法感知这个变化。

    监控

    这里就用到Flower了,这个flower可以安装到其他机器,我这里就安装到其他服务器上然后运行centos 7默认的也是Python2.7 我自己安装了Python3.7 所以我进入到编译安装后的目录里/usr/local/python3/bin中,然后pip3 install flower安装完毕后运行。

    然后我在笔记本上启动一个worker

    打开flower的界面

    通过命令调用一次任务

  • 相关阅读:
    INSPIRED启示录 读书笔记
    PHP反射类的理解(代码篇)
    PHP之实现双向链表(代码篇)
    单点登录 SSO 的实现原理 SESSION COOKIE Memcache
    Linux里如何查找文件内容
    PHP获取数组长度的方法 函数参数的比较
    爬虫经验总结
    认证 协议 JWT OAuth Session Cookie
    PHP统计所有字符在字符串中出现的次数
    Nginx 源码安装和调优
  • 原文地址:https://www.cnblogs.com/rexcheny/p/10341784.html
Copyright © 2020-2023  润新知