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生成器实现微线程编程的教程
Apr 13 Python
浅析Python中的多条件排序实现
Jun 07 Python
在win和Linux系统中python命令行运行的不同
Jul 03 Python
解读python logging模块的使用方法
Apr 17 Python
Python基于分析Ajax请求实现抓取今日头条街拍图集功能示例
Jul 19 Python
Django如何实现网站注册用户邮箱验证功能
Aug 14 Python
Python计算不规则图形面积算法实现解析
Nov 22 Python
Python3.5 win10环境下导入kera/tensorflow报错的解决方法
Dec 19 Python
Python双链表原理与实现方法详解
Feb 22 Python
keras的backend 设置 tensorflow,theano操作
Jun 30 Python
Python Selenium实现无可视化界面过程解析
Aug 25 Python
pytorch 预训练模型读取修改相关参数的填坑问题
Jun 05 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
使用adodb lite解决问题
2006/12/31 PHP
浅析PHP编程中10个最常见的错误
2014/08/08 PHP
php简单处理XML数据的方法示例
2017/05/19 PHP
Yii2框架控制器、路由、Url生成操作示例
2019/05/27 PHP
JavaScript 异步调用框架 (Part 5 - 链式实现)
2009/08/04 Javascript
ExtJS下grid的一些属性说明
2009/12/13 Javascript
JavaScript 程序编码规范
2010/11/23 Javascript
jQuery模拟超链接点击效果代码
2013/04/21 Javascript
删除select中所有option选项jquery代码
2013/08/12 Javascript
bootstrap实现弹窗和拖动效果
2016/01/03 Javascript
AngularJS手动表单验证
2016/02/01 Javascript
jQuery无刷新上传之uploadify3.1简单使用
2016/06/18 Javascript
完美解决jQuery的hover事件在IE中不停闪动的问题
2017/02/10 Javascript
Angular.js中控制器之间的传值详解
2017/04/24 Javascript
JS实现获取进今年第几天是周几的方法分析
2018/06/27 Javascript
javascript触发模拟鼠标点击事件
2019/06/26 Javascript
js实现随机抽奖
2020/03/19 Javascript
Vue中父子组件的值传递与方法传递
2020/09/28 Javascript
[04:28]2014DOTA2国际邀请赛 采访小兔子LGD挺进钥匙体育馆
2014/07/14 DOTA
[01:20]PWL S2开团时刻第三期——团战可以输 蝙蝠必须死
2020/11/26 DOTA
浅析Python的Django框架中的Memcached
2015/07/23 Python
python利用dlib获取人脸的68个landmark
2019/11/27 Python
css3气泡 css3关键帧动画创建的动态通知气泡
2013/02/26 HTML / CSS
使用CSS3的font-face字体嵌入样式的方法讲解
2016/05/13 HTML / CSS
this关键字的作用
2016/01/30 面试题
一套Delphi的笔试题一
2016/02/14 面试题
实习自我鉴定模板
2013/09/28 职场文书
12月小学生校园广播稿
2014/02/04 职场文书
业务员的岗位职责
2014/03/15 职场文书
财会专业毕业生自荐信
2014/07/09 职场文书
医院党的群众路线教育实践活动领导班子对照检查材料
2014/09/25 职场文书
税务干部个人整改措施思想汇报
2014/10/10 职场文书
2015年团支部年度工作总结
2015/05/27 职场文书
八年级作文之我的母亲
2019/12/10 职场文书
Django 实现jwt认证的示例
2021/04/30 Python
python DataFrame中stack()方法、unstack()方法和pivot()方法浅析
2022/04/06 Python