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 相关文章推荐
在ironpython中利用装饰器执行SQL操作的例子
May 02 Python
python实现的简单RPG游戏流程实例
Jun 28 Python
详解如何在python中读写和存储matlab的数据文件(*.mat)
Feb 24 Python
用Python下载一个网页保存为本地的HTML文件实例
May 21 Python
对Python Pexpect 模块的使用说明详解
Feb 14 Python
python中时间转换datetime和pd.to_datetime详析
Aug 11 Python
python遍历文件目录、批量处理同类文件
Aug 31 Python
numpy.array 操作使用简单总结
Nov 08 Python
python GUI库图形界面开发之PyQt5控件数据拖曳Drag与Drop详细使用方法与实例
Feb 27 Python
Python实现手势识别
Oct 21 Python
Python 发送SMTP邮件的简单教程
Jun 24 Python
Django中session进行权限管理的使用
Jul 09 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开发中的页面跳转方法总结
2015/04/26 PHP
[原创]PHP正则删除html代码中a标签并保留标签内容的方法
2017/05/23 PHP
js表格分页实现代码
2009/09/18 Javascript
JavaScript中的prototype使用说明
2010/04/13 Javascript
JavaScript接口实现代码 (Interfaces In JavaScript)
2010/06/11 Javascript
JavaScript栏目列表隐藏/显示简单实现
2013/04/03 Javascript
分析Node.js connect ECONNREFUSED错误
2013/04/09 Javascript
做好七件事帮你提升jQuery的性能
2014/02/06 Javascript
jquery插件pagination实现无刷新ajax分页
2015/09/30 Javascript
微信小程序 解析网页内容详解及实例
2017/02/22 Javascript
Bootstrap实现可折叠分组侧边导航菜单
2018/03/07 Javascript
TypeScript中的方法重载详解
2019/04/12 Javascript
微信小程序实现禁止分享代码实例
2019/10/19 Javascript
vue.js中使用微信扫一扫解决invalid signature问题(完美解决)
2020/04/11 Javascript
解决vue watch数据的方法被调用了两次的问题
2020/11/07 Javascript
python 示例分享---逻辑推理编程解决八皇后
2014/07/20 Python
python 判断是否为正小数和正整数的实例
2017/07/23 Python
Python实现类的创建与使用方法示例
2017/07/25 Python
python 识别图片中的文字信息方法
2018/05/10 Python
python去除拼音声调字母,替换为字母的方法
2018/11/28 Python
Python图像处理模块ndimage用法实例分析
2019/09/05 Python
Python的条件锁与事件共享详解
2019/09/12 Python
python应用文件读取与登录注册功能
2019/09/23 Python
Python字符串中删除特定字符的方法
2020/01/15 Python
零基础小白多久能学会python
2020/06/22 Python
Python脚本调试工具安装过程
2021/01/11 Python
linux系统都有哪些运行级别
2016/03/26 面试题
主题酒店策划书
2014/01/28 职场文书
中级会计职业生涯规划书
2014/03/01 职场文书
2014年党的群众路线教育实践活动总结
2014/04/25 职场文书
班子四风对照检查材料
2014/08/21 职场文书
个人合伙协议书范本
2014/10/14 职场文书
单位介绍信格式范文
2015/05/04 职场文书
关于远足的感想
2015/08/10 职场文书
靠谱准确的求职信
2019/04/02 职场文书
基于PyQT5制作一个桌面摸鱼工具
2022/02/15 Python