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的SimpleHTTPServer源码来解析socket通信
Jun 27 Python
Python 自动化表单提交实例代码
Jun 08 Python
对python实时得到鼠标位置的示例讲解
Oct 14 Python
正确理解Python中if __name__ == '__main__'
Jan 24 Python
Python判断有效的数独算法示例
Feb 23 Python
Django实现单用户登录的方法示例
Mar 28 Python
python实现最大优先队列
Aug 29 Python
python 普通克里金(Kriging)法的实现
Dec 19 Python
Python连接字符串过程详解
Jan 06 Python
Python将字典转换为XML的方法
Aug 01 Python
Python如何爬取51cto数据并存入MySQL
Aug 25 Python
使用PyCharm官方中文语言包汉化PyCharm
Nov 18 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 防注入函数(格式化数据)
2011/08/08 PHP
PHP页面间参数传递的四种方法详解
2013/06/09 PHP
解析mysql 表中的碎片产生原因以及清理
2013/06/22 PHP
基于PHP+Ajax实现表单验证的详解
2013/06/25 PHP
php导入导出excel实例
2013/10/25 PHP
WordPress开发中自定义菜单的相关PHP函数使用简介
2016/01/05 PHP
thinkPHP查询方式小结
2016/01/09 PHP
jQuery网页选项卡插件rTabs用法实例分析
2015/08/26 Javascript
AngularJS 中的指令实践开发指南(一)
2016/03/20 Javascript
深入浅析javascript中的作用域(推荐)
2016/07/19 Javascript
详细讲解JavaScript中的this绑定
2016/10/10 Javascript
js实现上下左右弹框划出效果
2017/03/08 Javascript
JS设置随机出现2个数字的实例代码
2017/07/19 Javascript
详解vue-cli项目中怎么使用mock数据
2018/05/29 Javascript
探秘vue-rx 2.0(推荐)
2018/09/21 Javascript
JavaScript数组、json对象、eval()函数用法实例分析
2019/02/21 Javascript
微信小程序实现收货地址左滑删除
2020/11/18 Javascript
对layui中table组件工具栏的使用详解
2019/09/19 Javascript
js将URL网址转为16进制加密与解密函数
2020/03/04 Javascript
简单了解JavaScript作用域
2020/07/31 Javascript
python利用elaphe制作二维条形码实现代码
2012/05/25 Python
python实现的登陆Discuz!论坛通用代码分享
2014/07/11 Python
在Python中处理字符串之isdecimal()方法的使用
2015/05/20 Python
python中的全局变量用法分析
2015/06/09 Python
pandas 使用apply同时处理两列数据的方法
2018/04/20 Python
python 巧用正则寻找字符串中的特定字符的位置方法
2018/05/02 Python
基于Python fminunc 的替代方法
2020/02/29 Python
CSS3 对过渡(transition)进行调速以及延时
2020/10/21 HTML / CSS
HTML5适合的情人节礼物有纪念日期功能
2021/01/25 HTML / CSS
美国零售商店:Blue&Cream
2017/04/07 全球购物
英国男士时尚购物网站:Stuarts London
2017/10/22 全球购物
学校通报表扬范文
2015/05/04 职场文书
寻找最美乡村教师观后感
2015/06/18 职场文书
小组组名及励志口号
2015/12/24 职场文书
职工趣味运动会开幕词
2016/03/04 职场文书
将Python代码打包成.exe可执行文件的完整步骤
2021/05/12 Python