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 httplib,smtplib使用方法
Sep 06 Python
python使用os模块的os.walk遍历文件夹示例
Jan 27 Python
Python常用知识点汇总
May 08 Python
对python pandas 画移动平均线的方法详解
Nov 28 Python
Django框架用户注销功能实现方法分析
May 28 Python
python数组循环处理方法
Aug 26 Python
python getpass模块用法及实例详解
Oct 07 Python
Pytorch之Variable的用法
Dec 31 Python
python如何编写类似nmap的扫描工具
Nov 06 Python
PyTorch中的拷贝与就地操作详解
Dec 09 Python
pycharm 多行批量缩进和反向缩进快捷键介绍
Jan 15 Python
python中的getter与setter你了解吗
Mar 24 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
延长phpmyadmin登录时间的方法
2011/02/06 PHP
PHP 自定义错误处理函数trigger_error()
2013/03/26 PHP
php实现加减法验证码代码
2014/02/14 PHP
利用PHP判断文件是否为图片的方法总结
2017/01/06 PHP
Laravel使用scout集成elasticsearch做全文搜索的实现方法
2018/11/30 PHP
php两点地理坐标距离的计算方法
2018/12/29 PHP
jQuery EasyUI API 中文文档 - NumberSpinner数值微调器使用介绍
2011/10/21 Javascript
对frameset、frame、iframe的js操作示例代码
2013/08/16 Javascript
javascript验证只能输入数字和一个小数点示例
2013/10/21 Javascript
JS判断客户端是手机还是PC的2个代码
2014/04/12 Javascript
node.js中的fs.lchown方法使用说明
2014/12/16 Javascript
浅谈es6语法 (Proxy和Reflect的对比)
2017/10/24 Javascript
axios拦截设置和错误处理方法
2018/03/05 Javascript
微信JS-SDK实现微信会员卡功能(给用户微信卡包里发送会员卡)
2019/07/25 Javascript
[03:56]显微镜下的DOTA2第十一期——鬼畜的死亡先知播音员
2014/06/23 DOTA
go和python调用其它程序并得到程序输出
2014/02/10 Python
在Python中使用itertools模块中的组合函数的教程
2015/04/13 Python
python 实时遍历日志文件
2016/04/12 Python
pycharm+django创建一个搜索网页实例代码
2018/01/24 Python
记录Python脚本的运行日志的方法
2019/06/05 Python
pandas实现to_sql将DataFrame保存到数据库中
2019/07/03 Python
Python Pandas对缺失值的处理方法
2019/09/27 Python
Django实现auth模块下的登录注册与注销功能
2019/10/10 Python
如何在Django中使用聚合的实现示例
2020/03/23 Python
Pycharm常用快捷键总结及配置方法
2020/11/14 Python
基于HTML5 Canvas:字符串,路径,背景,图片的详解
2013/05/09 HTML / CSS
Seavenger官网:潜水服、浮潜、靴子和袜子
2020/03/05 全球购物
中专生自荐信
2013/10/12 职场文书
班组长安全职责
2014/01/05 职场文书
企业职业病防治方案
2014/05/29 职场文书
六一亲子活动总结
2014/07/01 职场文书
2014年中职班主任工作总结
2014/12/16 职场文书
护士节慰问信
2015/02/15 职场文书
小学生教师节广播稿
2015/08/19 职场文书
感恩信:写给爸爸妈妈的一封感谢信
2019/09/12 职场文书
「租借女友」第2季樱泽墨角色PV&新视觉图公开
2022/03/21 日漫