django-celery提供给顾客使用实例
导入数据库
from
djcelery
import
models as celery_models
celery_models.PeriodicTask.objects.create(...)
celery_models.PeriodicTask.ojects.get(name
=
'add'
)
- def read(self, request, *args, **kwargs):
- try:
- task = celery_models.PeriodicTask.objects.get(name=self.TASK_NAME)
- if task.enabled:
- return {
- 'enabled': True,
- 'day_of_month': int(task.crontab.day_of_month),
- 'last_run_at': task.last_run_at if task.last_run_at else ''
- }
- else:
- return {'enabled': False}
- except celery_models.PeriodicTask.DoesNotExist:
- return {'enabled': False}
更新日期
- def create(self, request, *args, **kwargs):
- enabled = request.POST.get('enabled', None)
- if enabled not in [self.ENABLED_POST_VALUE, self.DISABLED_POST_VALUE]:
- return self.operate_fail('无效参数')
- if enabled == self.DISABLED_POST_VALUE:
- self.disable_task(self.TASK_NAME)
- return self.operate_success()
- else:
- try:
- day_of_month = int(request.POST.get('day_of_month', ''))
- if day_of_month > 28 or day_of_month < 1:
- return self.operate_fail('日期必须在1-28日之间')
- task, created = celery_models.PeriodicTask.objects.get_or_create(name="monthly_reading",
- task="mrs_app.my_celery.tasks.monthly_reading_task")
- if created:
- crontab = celery_models.CrontabSchedule.objects.create(day_of_month=day_of_month,
- hour=0,
- minute=0)
- crontab.save()
- task.crontab = crontab
- task.enabled = True
- task.save()
- else:
- task.crontab.day_of_month = day_of_month
- task.crontab.save()
- task.enabled = True
- task.save()
- return self.operate_success()
- except ValueError:
- return self.operate_fail('抄表日不能为空')
关闭定时
- def disable_task(self, name):
- try:
- task = celery_models.PeriodicTask.objects.get(name=name)
- task.enabled = False
- task.save()
- return True
- except celery_models.PeriodicTask.DoesNotExist:
- return True
定义任务的两种格式
类定义:一个继承了celery.app.task的类并实现了run方法
函数定义:@task装饰的函数
- from celery import task
- #第一种,函数方式
- @task(name='monthly_reading')
- def monthly_reading_task():
- task_obj = MonthlyReading(debug=False)
- task_obj.start()
- #第二种,类定义
- class MonthlyReadingTask(Task):
- name='monthly_reading'
- def run(*args, **kwargs):
- task_obj = MonthlyReading(debug=False)
- task_obj.start()
django-celery提供给顾客使用实例的更多相关文章
- django+celery+ RabbitMQ实现异步任务实例
背景 django要是针对上传文件等需要异步操作的场景时,celery是一个非常不错的选择.笔者的项目就是使用了这个组合,这里就做一个备忘吧. 安装RabbitMQ 这个安装及使用我已经在前一 ...
- Django中提供的6种缓存方式
由于Django是动态网站,所有每次请求均会去数据进行相应的操作,当程序访问量大时,耗时必然会更加明显,最简单解决方式是使用: 缓存,缓存将一个某个views的返回值保存至内存或者memcache中, ...
- 基于Django+celery二次开发动态配置定时任务 ( 一 )
需求: 前端时间由于开发新上线一大批系统,上完之后没有配套的报表系统.监控,于是乎开发.测试.产品.运营.业务部.财务等等各个部门就跟那饥渴的饿狼一样需要 各种各样的系统数据满足他们.刚开始一天一个还 ...
- django celery异步框架
描述:实现运维平台的异步执行与定时任务,以下简单描述了安装过程及使用. 安装django和celery pip install django pip install celery pip inst ...
- Django——20141014深入理解Django HttpRequest HttpResponse的类和实例
深入理解Django HttpRequest HttpResponse的类和实例 了解META选项 了解中间件 理清所有模板传输模板变量的方式,并作出选择 Django模板系统:如何利用Django模 ...
- 结合Django+celery二次开发定时周期任务
需求: 前端时间由于开发新上线一大批系统,上完之后没有配套的报表系统.监控,于是乎开发.测试.产品.运营.业务部.财务等等各个部门就跟那饥渴的饿狼一样需要 各种各样的系统数据满足他们.刚开始一天一个还 ...
- django & celery - 关于并发处理能力和内存使用的小结
背景 众所周知,celery 是python世界里处理分布式任务的好助手,它的出现结合赋予了我们强大的处理异步请求,分布式任务,周期任务等复杂场景的能力. 然鹅,今天我们所要讨论的则是如何更好的在使用 ...
- Django+Celery+xadmin实现异步任务和定时任务
Django+Celery+xadmin实现异步任务和定时任务 关注公众号"轻松学编程"了解更多. 一.celery介绍 1.简介 [官网]http://www.celerypro ...
- django+celery+redis环境搭建
初次尝试搭建django+celery+redis环境,记录下来,慢慢学习~ 1.安装apache 下载httpd-2.0.63.tar.gz,解压tar zxvf httpd-2.0.63.tar. ...
随机推荐
- /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.15' not found,解压rpm包
如果是64位系统报错信息如下: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.15' not found (required by 原因是没有GLIB ...
- wordpress在window下完美实现301重定向的方法
问题: 首先,简单说一下关于301重定向的问题,最简单的理解就是,假设你的主机上绑定有 www.uilike.cn, uilike.cn, www.uiseo.cn三个域名,当你想输入 uilike. ...
- Linux特殊权限:SUID、SGID、SBIT
SUID: 只对二进制程序有效 执行者对于程序需要有x权限 在程序运行过程中,执行者拥有程序拥有者的权限 例如: 普通用户执行passwd命令. ...
- js 触摸事件
js触摸事件 应用在移动端 webkit内核都支持. 触摸事件api https://dvcs.w3.org/hg/webevents/raw-file/tip/touchevents.html 事件 ...
- 如何分割(split)string字符串
使用String#split()方法 如下所示: String string = "004-034556"; String[] parts = string.split(" ...
- String VS Cstring(字符串)
#include<string> 与 #include<string.h> 这是两个完全不同的头文件,前者用于C++,后者用于C,一般把这两个头文件都包括进去. 越来越觉得需要 ...
- JavaEE学习之类加载器
类装载子系统 在JAVA虚拟机中,负责查找并装载类型的那部分被称为类装载子系统. JAVA虚拟机有两种类装载器:启动类装载器和用户自定义类装载器.前者是JAVA虚拟机实现的一部分,后者则是Java程序 ...
- jquery获取多个checkbox的值异步提交给php
html代码: <tr> <td><input type="checkbox" name="uid" value="&l ...
- sqlserver 只有函数和扩展存储过程才能从函数内部执行
一个SQLServer的自定义函数中调用一个自定义的存储过程,执行此函数后发出如下提示:“只有函数和扩展存储过程才能从函数内部执行". 原因:函数只能使用简单的sql语句,逻辑控制语句,复杂 ...
- feof()和EOF的用法(转载)
查看 stdio.h 可以看到如下定义: #define EOF (-1) #define _IOEOF 0x0010 #define feof(_stream) ((_stream)-& ...