博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python-模块和包.深入Celery之Beat触发定时/周期性任务
阅读量:5861 次
发布时间:2019-06-19

本文共 1577 字,大约阅读时间需要 5 分钟。

hot3.png

任务调度:

1. Celery默认任务单元由任务生产者触发,但有时可能需要其自动触发,而Beat进程正是负责此类任务,能够自动触发定时/周期性任务.

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

26

27

28

29

#!/usr/bin/env python

# -*- coding: utf-8 -*-

#     : 2016-12-24 17:32:54

#   : 李满满 (xmdevops@vip.qq.com)

#     : http://xmdevops.blog.51cto.com/

#  : $Id$

from __future__ import absolute_import

# 说明: 导入公共模块

from datetime import timedelta

from kombu import Queue, Exchange

from celery.schedules import crontab

# 说明: 导入其它模块

# BROKER_URL = 'amqp://root:qwertyuiop@172.24.10.1:5672//'

# CELERY_RESULT_BACKEND = 'redis://172.24.10.1:6379/0'

BROKER_URL = 'amqp://root:qwertyuiop@10.2.5.51:5672//'

CELERY_RESULT_BACKEND = 'redis://10.2.5.51:5123/0'

CELERY_TASK_SERIALIZER = 'msgpack'

CELERY_RESULT_SERIALIZER = 'json'

CELERY_TASK_RESULT_EXPIRES = 60 * 60 * 24

CELERY_ACCEPT_CONTENT = ['json''msgpack']

CELERYD_MAX_TASKS_PER_CHILD = 40

CELERYBEAT_SCHEDULE = {

    'send_mail': {

        'task''work.notify.email.send_mail',

        # 'schedule': timedelta(minute=1),

        'schedule': crontab(minute='*/1'),

        'args': ('usr''sub''msg')

    }

}

说明: 任务调度主要是为了解决业务场景中定时或周期任务,分别使用timedelta和crontab来定义计划任务,crontab的精度无法精确到秒时可使用timedelta代替,CELERYBEAT_SCHEDULE下可以定义多个计划/周期任务,send_mail为任务名称,task为任务单元导入名,schedule为具体调度,args为任务单元的参数.

注意: 运行时可先启动work进程池(celery worker -A work.app -l info)然后再启动beat进程池(celery beat -A work.app -l info),观察会发现beat进程每分钟生成一个任务,work进程发现任务后立即执行

扩展: Django-celery可实现在管理后台添加,删除,更新任务,是因为它使用了自定义的调度类djcelery.schedulers.DatabaseScheduler,Flask没有所以可以参考它来完成同样的功能.

 

登录乐搏学院官网

或关注我们的官方微博,还有更多惊喜哦~

 

本文出自 “” 博客,请务必保留此出处

转载于:https://my.oschina.net/learnbo/blog/842621

你可能感兴趣的文章
性能调优概述,你不能不知的优化策略
查看>>
AlpalyOneCell.xib Frame for "中老年抗癌计划" will be different at run time.
查看>>
我的友情链接
查看>>
Excel表格模板:费用支出报销单下载
查看>>
我的友情链接
查看>>
微软云计算介绍与实践(实践之七)
查看>>
解决OSPF不连续区域的3种方法
查看>>
多形性
查看>>
周珍:那些年,我们一起谈论的SEO培训
查看>>
Oracle 也加入到 Eclipse MicroProfile项目中了
查看>>
mysqldump导入导出mysql数据库
查看>>
linux中软硬链接的区别
查看>>
由于if功力不足引出的Helper
查看>>
ng-zorro-antd 入门
查看>>
CentOS修改文件夹权限
查看>>
Esper学习笔记三:EPL语法(1)
查看>>
dcoker 搭建 elk环境
查看>>
Spring源码深度解析:学习笔记
查看>>
python+django(admin管理工具)
查看>>
IPv6中国迎来网络主权博弈的关键时刻
查看>>