• 二、Python Celery 4.4.7 与 Django 2.X的集成【定时任务的调用】


    0、这里简单介绍增加定时任务的功能,环境搭建这块,请参考:

    1、一、Python Celery 4.4.7 与 Django 2.X的集成【实现异步调用】
    https://www.cnblogs.com/ygbh/p/13618556.html
    
    2、Linux RabbitMQ单机与集群部署
    https://www.cnblogs.com/ygbh/p/13461525.html
    
    3、Python Celery与RabbitMQ结合操作
    https://www.cnblogs.com/ygbh/p/13530885.html

    1、首先到GitHub拉取代码

    [root@mq1 ~]# git clone git@github.com:ygbh/celery_django_project.git
    Cloning into 'celery_django_project'...
    remote: Enumerating objects: 33, done.
    remote: Counting objects: 100% (33/33), done.
    remote: Compressing objects: 100% (23/23), done.
    remote: Total 33 (delta 7), reused 27 (delta 6), pack-reused 0
    Receiving objects: 100% (33/33), 9.93 KiB | 0 bytes/s, done.
    Resolving deltas: 100% (7/7), done.
    
    [root@mq1 ~]# ll
    
    drwxr-xr-x   5 root root  136 Sep  9 16:48 celery_django_project

     2、在tasks.py增加测试定时任务的函数

    [root@mq1 celery_django_project]# tail -n 10 app01/tasks.py 
    @shared_task(ignore_result=True)  # 生产为:ignore_result=False,自动调度任务,需要配置返回结果关闭,结果没有什么义意,不然数据会越来越多,导致中间件挂掉
    def start_cycle_task(arg1, argv):
        """
            这个是测试定时任务的函数
        :param arg1: 传入参数
        :param argv: 传入列表
        :return: 返回'ok'
        """
        print('时间戳:' + str(int(time.time())))
        return 'ok'

     3、在celery_settings.py 增加定时任务的配置

    # 配置定时周期的任务
    # 参考官方文档:https://docs.celeryproject.org/en/stable/userguide/periodic-tasks.html#available-fields
    CELERY_BEAT_SCHEDULE = {
        # test_task1 ==> 'schedule': 3.0,定义几秒即可
        # 'test_task1': {
        #     'task': 'app01.tasks.start_cycle_task',
        #     'schedule': 3.0,
        #     'args': (16, [1, 2, 3])
        # },
        # test_task2 ==> ’crontab()’,设定时期时间,跟Linux的crontab,差不多
        'test_task2': {
            'task': 'app01.tasks.start_cycle_task',
            'schedule': crontab(month_of_year='9', day_of_month='9', minute='*/1'),  # 设置9月9日,每一分钟执行一次
            'args': (16, [1, 2, 3])
        },
    }

    4、启动服务

    1、启动worker服务
    [root@mq1 celery_django_project]# celery -A django_celery_project worker -l info

    2、启动beat服务
    [root@mq1 celery_django_project]# celery beat -A django_celery_project --schedule=/var/run/celery/celerybeat-schedule

    5、验证结果,这里的代码是1分钟执行一次

    5.1、Worker端显示

    5.2、Beat端显示

    5.3、Beat端序列化的位置

     

    6、定时任务配置完成

  • 相关阅读:
    dell R610 idrac6 无法登陆全网最全解决方法
    数据挖掘——序列数据
    git pull 指定文件
    K8s+云原生
    Java8新特性学习
    什么是三星索引?
    Mongodb学习笔记
    JUC 学习笔记
    SQL函数Group_concat用法
    MySQL索引下推
  • 原文地址:https://www.cnblogs.com/ygbh/p/13639068.html
Copyright © 2020-2023  润新知