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实现颜色空间转换程序(Tkinter)
Dec 31 Python
CentOS6.5设置Django开发环境
Oct 13 Python
Python中的连接符(+、+=)示例详解
Jan 13 Python
Python基于递归算法实现的走迷宫问题
Aug 04 Python
python获取酷狗音乐top500的下载地址 MP3格式
Apr 17 Python
在windows下Python打印彩色字体的方法
May 15 Python
python实现猜数字小游戏
Mar 24 Python
Python手动或自动协程操作方法解析
Jun 22 Python
解决python运行效率不高的问题
Jul 20 Python
使用Python操作MySQL的小技巧
Sep 10 Python
Python xlwings插入Excel图片的实现方法
Feb 26 Python
Python list列表删除元素的4种方法
Nov 01 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
thinkphp特殊标签用法概述
2014/11/24 PHP
PHP中使用register_shutdown_function函数截获fatal error示例
2015/04/21 PHP
基于ThinkPHP实现批量删除
2015/12/18 PHP
Joomla开启SEF的方法
2016/05/04 PHP
使用PHP+MySql实现微信投票功能实例代码
2017/09/29 PHP
PHP APP微信提现接口代码
2018/09/30 PHP
双击滚屏-常用推荐
2006/11/29 Javascript
一个JS小玩意 几个属性相加不能超过一个特定值.
2009/09/29 Javascript
基于Jquery的简单&简陋Tabs插件代码
2010/02/09 Javascript
HTML Dom与Css控制方法
2010/10/25 Javascript
需要做特殊处理的DOM元素属性的访问
2010/11/05 Javascript
JQuery中判断一个元素下面是否有内容或者有某个标签的判断代码
2012/02/02 Javascript
网页整体变灰白色(兼容各浏览器)实例
2013/04/21 Javascript
js弹窗返回值详解(window.open方式)
2014/01/11 Javascript
文本框倒叙输入让输入框的焦点始终在最开始的位置
2014/09/01 Javascript
javascript实现微信分享
2014/12/23 Javascript
JavaScript之Object类型介绍
2015/04/01 Javascript
使用CDN和AJAX加速WordPress中jQuery的加载
2015/12/05 Javascript
AngularJS入门教程之更多模板详解
2016/08/19 Javascript
jQuery联动日历的实例解析
2016/12/02 Javascript
js获取浏览器的各种属性
2017/04/27 Javascript
详解微信小程序Page中data数据操作和函数调用
2017/09/27 Javascript
JS点击动态添加标签、删除指定标签的代码
2018/04/18 Javascript
js 下拉菜单点击旁边收起实现(踩坑记)
2019/09/29 Javascript
[04:56]经典回顾:前Ehome 与 前LGD
2015/02/26 DOTA
[34:08]2018DOTA2亚洲邀请赛3月29日 小组赛B组 VP VS EG
2018/03/30 DOTA
Python中对象的引用与复制代码示例
2017/12/04 Python
Python3对称加密算法AES、DES3实例详解
2018/12/06 Python
PyQt弹出式对话框的常用方法及标准按钮类型
2019/02/27 Python
使用python的pyplot绘制函数实例
2020/02/13 Python
在python里创建一个任务(Task)实例
2020/04/25 Python
python中@contextmanager实例用法
2021/02/07 Python
美国在线购物频道:Shop LC
2019/04/21 全球购物
大一新生军训时的自我评价分享
2013/12/05 职场文书
会计人员演讲稿
2014/09/11 职场文书
因家庭原因离职的辞职信范文
2015/05/12 职场文书