Django实现celery定时任务过程解析


Posted in Python onApril 21, 2020

1.首先在项目同名目录下建一个celery.py

from __future__ import absolute_import
import os
from celery import Celery
from datetime import timedelta
from kombu import Queue

# set the default Django settings module for the 'celery' program.
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'OpsManage.settings')

from django.conf import settings

app = Celery('OpsManage')

# Using a string here means the worker will not have to
# pickle the object when using Windows.
# 配置celery
class Config:
  BROKER_URL = 'amqp://guest:guest@localhost:5672//'
  CELERY_RESULT_BACKEND = 'redis://localhost:6379'
  CELERY_ACCEPT_CONTENT = ['application/json']
  CELERY_TASK_SERIALIZER = 'json'
  CELERY_RESULT_SERIALIZER = 'json'
  CELERY_TASK_RESULT_EXPIRES = 60 * 60
  CELERY_TIMEZONE = 'Asia/Shanghai'
  CELERY_ENABLE_UTC = True
  CELERY_ANNOTATIONS = {'*': {'rate_limit': '500/s'}}
  CELERYBEAT_SCHEDULER = 'djcelery.schedulers.DatabaseScheduler'

app.config_from_object(Config)
# 到各个APP里自动发现tasks.py文件
app.autodiscover_tasks()
#crontab config
app.conf.update(
  CELERYBEAT_SCHEDULE = {
    # 每隔30s执行一次函数
    'every-30-min-add': {
      'task': 'apps.tasks.celery_assets.push_host_by_salt_tasks',
      'schedule': timedelta(seconds=30)
      # # 每天凌晨12点
      # 'schedule': crontab(minute=0, hour=0)
    },
  },
)
# kombu : Celery 自带的用来收发消息的库, 提供了符合 Python 语言习惯的, 使用 AMQP 协议的高级接口
Queue('transient', routing_key='transient',delivery_mode=1)

2.在settings.py里配置celery

INSTALLED_APPS = [
  ......
  'django_celery_beat',
  'django_celery_results',
]

3.在项目同名目录下的__init__.py文件里申明celery任务,记得要去检测呀

# coding:utf-8
from __future__ import absolute_import, unicode_literals

# This will make sure the app is always imported when
# Django starts so that shared_task will use this app.
from celery import app as celery_app

__all__ = ['celery_app']

import pymysql
pymysql.install_as_MySQLdb()

4.在task.py里执行任务的函数上加@

from celery import task
# 定时任务
@task
def push_host_by_salt_tasks():
  “”“balabala”“”
  return '这里是定时任务'

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python切片知识解析
Mar 06 Python
python不换行之end=与逗号的意思及用途
Nov 21 Python
Python数据分析之双色球中蓝红球分析统计示例
Feb 03 Python
python 创建一个空dataframe 然后添加行数据的实例
Jun 07 Python
浅谈python中真正关闭socket的方法
Dec 18 Python
python读取图片任意范围区域
Jan 23 Python
Python:Numpy 求平均向量的实例
Jun 29 Python
python 命令行传入参数实现解析
Aug 30 Python
Python拆分大型CSV文件代码实例
Oct 07 Python
使用python快速在局域网内搭建http传输文件服务的方法
Nov 14 Python
浅谈tensorflow使用张量时的一些注意点tf.concat,tf.reshape,tf.stack
Jun 23 Python
用Python将GIF动图分解成多张静态图片
Jun 11 Python
使用PyQt5实现图片查看器的示例代码
Apr 21 #Python
快速解决jupyter notebook启动需要密码的问题
Apr 21 #Python
Python3.7将普通图片(png)转换为SVG图片格式(网站logo图标)动起来
Apr 21 #Python
Django基于客户端下载文件实现方法
Apr 21 #Python
Iconfont(矢量图标)+iconmoon(图标svg互转)配合javascript实现社交分享系统
Apr 21 #Python
Tensorflow安装问题: Could not find a version that satisfies the requirement tensorflow
Apr 20 #Python
jupyter notebook 的工作空间设置操作
Apr 20 #Python
You might like
PHP XML error parsing SOAP payload on line 1
2010/06/17 PHP
flash用php连接数据库的代码
2011/04/21 PHP
Zend Framework教程之Zend_Db_Table_Row用法实例分析
2016/03/21 PHP
php遍历解析xml字符串的方法
2016/05/05 PHP
PHP调用API接口实现天气查询功能的示例
2017/09/21 PHP
Laravel 解决composer相关操作提示php相关异常的问题
2019/10/23 PHP
jQuery 数据缓存data(name, value)详解及实现
2010/01/04 Javascript
如何使用Jquery获取Form表单中被选中的radio值
2013/08/09 Javascript
使用jquery中height()方法获取各种高度大全
2014/04/02 Javascript
JS给Textarea文本框添加行号的方法
2015/08/20 Javascript
JS DOM实现鼠标滑动图片效果
2020/09/17 Javascript
全面解析JavaScript里的循环方法之forEach,for-in,for-of
2020/04/20 Javascript
JS实现的手机端精简幻灯片效果
2016/09/05 Javascript
AngularJS使用angular.bootstrap完成模块手动加载的方法分析
2017/01/19 Javascript
angularjs实现的购物金额计算工具示例
2018/05/08 Javascript
jQuery实现的简单拖拽功能示例【测试可用】
2018/08/14 jQuery
vue - props 声明数组和对象操作
2020/07/30 Javascript
[01:25:09]2014 DOTA2国际邀请赛中国区预选赛 5 23 CIS VS DT第二场
2014/05/24 DOTA
[30:51]DOTA2上海特级锦标赛主赛事日 - 3 胜者组第二轮#1Liquid VS MVP.Phx第一局
2016/03/04 DOTA
[57:12]完美世界DOTA2联赛循环赛 Inki vs Matador BO2第一场 10.31
2020/11/02 DOTA
python中的实例方法、静态方法、类方法、类变量和实例变量浅析
2014/04/26 Python
python中使用urllib2伪造HTTP报头的2个方法
2014/07/07 Python
Python的Flask站点中集成xhEditor文本编辑器的教程
2016/06/13 Python
python根据txt文本批量创建文件夹
2020/12/08 Python
Python实现打砖块小游戏代码实例
2019/05/18 Python
Python3简单爬虫抓取网页图片代码实例
2019/08/26 Python
python树的同构学习笔记
2019/09/14 Python
python获取整个网页源码的方法
2020/08/03 Python
matplotlib基础绘图命令之bar的使用方法
2020/08/13 Python
Ibatis如何使用动态表名
2015/07/12 面试题
Why do we need Unit test
2013/01/03 面试题
优秀乡村医生事迹材料
2014/05/28 职场文书
县政府领导班子四风问题对照检查材料思想汇报
2014/09/26 职场文书
党员个人批评与自我批评
2014/10/14 职场文书
西游降魔篇观后感
2015/06/15 职场文书
煤矿隐患排查制度
2015/08/05 职场文书