Django-如何写好一个celery定时任务
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 '这里是定时任务'
Django-如何写好一个celery定时任务的更多相关文章
- Django Celery定时任务和时间设置
1.Celery加入定时任务 Celery除了可以异步执行任务之外,还可以定时执行任务.在实例代码的基础上写个测试方法: #coding:utf- from celery.task.schedules ...
- Bamboo Django Celery定时任务和时间设置
1.Celery加入定时任务 Celery除了可以异步执行任务之外,还可以定时执行任务.在实例代码的基础上写个测试方法: 1 #coding:utf-8 2 from celery.task.sche ...
- celery 分布式异步任务框架(celery简单使用、celery多任务结构、celery定时任务、celery计划任务、celery在Django项目中使用Python脚本调用Django环境)
一.celery简介: Celery 是一个强大的 分布式任务队列 的 异步处理框架,它可以让任务的执行完全脱离主程序,甚至可以被分配到其他主机上运行.我们通常使用它来实现异步任务(async tas ...
- celery 定时任务时间篇
1.Celery加入定时任务 Celery除了可以异步执行任务之外,还可以定时执行任务.在实例代码的基础上写个测试方法: 1 #coding:utf-8 2 from celery.task.sche ...
- django+xadmin+djcelery实现后台管理定时任务
继上一篇中间表的数据是动态的,图表展示的数据才比较准确.这里用到一个新的模块Djcelery,安装配置步骤如下: 1.安装 redis==2.10.6 celery==3.1.23 django-ce ...
- 五分钟看懂Celery定时任务
Django下使用Celery 使用场景: 1, Web应用. 当用户触发的一个操作需要很长时间才能执行完成,那么就可以把它当做一个任务去交给Celery去异步执行, 执行完成之后再返回给用户,这短时 ...
- django 异步任务实现及Celery beat实现定时/轮询任务
Celery定时任务 requirements celery==3.1.25 异步任务 django-celery==3.2.2 定时任务管理包 redis==2.10.6 django-redis- ...
- 将celery定时任务设置为根据本地时区触发
默认celery的时区为UTC,如果要在django项目中将celery定时任务配置为根据本地时区触发,则需要修改 在setttings.py 添加以下任意一行: # celery 相关配置 CELE ...
- 二、Django用Eclipse编写一个登录界面
一.Django用Eclipse编写一个登录界面 二.Django用Eclipse编写一个登录界面Ajax和Django交互 各软件版本:Python 2.7.14,django 1.6.11 原来已 ...
随机推荐
- 深入浅出Spring(一)
现在很多的企业级项目中基本上都会用到了Spring框架,那么为什么会出现Spring,Spring是什么?这次的博文我主要为大家简单介绍一下Spring. Java EE优缺点 我们都知道在2003年 ...
- Ansible 常见模块介绍
目录 Ansible 常见模块介绍 ping 模块 command 模块 cron 模块 user 模块 group 模块 copy 模块 file 模块 service 模块 shell 模块 sc ...
- 单例模式-python
单例模式 什么是单例 当实例化多次得到的对象中存放的属性都一样的情况,应该将多个对象指向同一个内存,即同一个实例 有什么优点 在内存里只有一个实例,减少了内存的开销,尤其是频繁的创建和销毁实例(比如管 ...
- 查看/设置JVM使用的垃圾收集器
一.设置垃圾收集器的参数 -XX:+UseSerialGC,虚拟机在Client模式下的默认值,Serial+Serial Old -XX:+UseParNewGC,ParNew+Serial Old ...
- 鲲鹏云实验-Python+Jupyter机器学习基础环境
[摘要] 介绍Ubuntu 18.04环境下Python3常用科学计算和数据分析包(numpy, scipy, matplotlib, sklearn, pandas)的安装,以及Jupyter No ...
- java内存模型和内存结构
java内存模型说的是多线程,网上可能会有写误导,并不是什么堆.栈.方法区,很多人都会搞混.说白了就是多线程中主线程和本地线程之间的一个数据可见性问题. jmm:java内存模型:jvm:java内存 ...
- CF 1132A,1132B,1132C,1132D,1132E,1132F(Round 61 A,B,C,D,E,F)题解
A.Regular bracket sequence A string is called bracket sequence if it does not contain any characters ...
- 了解一下Mysql分布式事务及优缺点、使用案例(php+mysql)
在开发中,为了降低单点压力,通常会根据业务情况进行分表分库,将表分布在不同的库中(库可能分布在不同的机器上),但是一个业务场景可能会同时处理两个表的操作.在这种场景下,事务的提交会变得相对复杂,因为多 ...
- shell脚本调用python模块
python helloworld.py代码为 # coding:utf-8 from __future__ import print_function import sys print(sys.pa ...
- linux—ln
1. 软连接:不可删除源文件,删除源文件导致链接文件找不到,出现红色闪烁. 2. 硬链接: 源文件删除后,链接文件可以正常打开,链接前后的文件inode号相同,硬链接只能针对文件做链接,,不能针 ...