django和celery结合应用
django+celery项目结构
- project_name- app01- __init__.py- admin.py- views.py- modes.py- tasks.py #celery用来执行任务的文件,task里的任务由views函数里去触发- urls.py - views.py- project_name- __init__.py #初始化celery- celery.py #celery 定义实例- settings.py #用来配置redis或rabbitmq地址- urls.py- views.py- wsgi.py- templates- static- manager.py- db.sqlite3
celery.py
from __future__ import absolute_import, unicode_literalsimport osfrom celery import Celery# set the default Django settings module for the 'celery' program. os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'project_name.settings') #这里要写项目名称app = Celery('project_name') app.config_from_object('django.conf:settings', namespace='CELERY') #这里配置settings里与celery相关配置的前缀# Load task modules from all registered Django app configs. app.autodiscover_tasks()@app.task(bind=True)def debug_task(self):print('Request: {0!r}'.format(self.request))
project_name/__init__.py
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']
tasks.py
#!/usr/bin/env python #-*-coding:utf-8-*- from __future__ import absolute_import, unicode_literals from celery import shared_task import subprocess@shared_task def add(x, y):return x + y@shared_task def mul(x, y):return x * y@shared_task def cmd_run(cmd):result = subprocess.Popen(cmd,shell=True,stdout=subprocess.PIPE,stderr=subprocess.PIPE)return result.stdout.read().decode("utf-8")
app01/views.py
from django.shortcuts import render,redirect,HttpResponse from django_celery import tasks #引入taskfrom celery.result import AsyncResult
def test_celery(request): #这里用来触发tasks里的任务res = tasks.cmd_run.delay("ipconfig",)#print (res.get) #如果在此处直接get会变成同步return HttpResponse(res.task_id) #获取taskid #获取任务执行状态返回给前端def task_res(request): result = AsyncResult(id=task_id) return HttpResponse(result.status)
app01/urls.py
from django.conf.urls import url,include from django.contrib import admin from django_celery import viewsurlpatterns = [url(r'^admin/', admin.site.urls),url(r'^test_celery/$',views.test_celery) ]
启动worker
celery -A wecaht worker -l info -P eventlet
django&celery 定时任务
pip3 install django-celery-beat##settings.py 里注册 django-celery-beat INSTALLED_APPS = ['django_celery_beat', ]python manage.py migrateD:\django-project\wechat>python manage.py migrate Operations to perform:Apply all migrations: auth, sessions, django_celery_beat, contenttypes, admin Running migrations:Rendering model states... DONEApplying contenttypes.0001_initial... OKApplying auth.0001_initial... OKApplying admin.0001_initial... OKApplying admin.0002_logentry_remove_auto_add... OKApplying contenttypes.0002_remove_content_type_name... OKApplying auth.0002_alter_permission_name_max_length... OKApplying auth.0003_alter_user_email_max_length... OKApplying auth.0004_alter_user_username_opts... OKApplying auth.0005_alter_user_last_login_null... OKApplying auth.0006_require_contenttypes_0002... OKApplying auth.0007_alter_validators_add_error_messages... OKApplying django_celery_beat.0001_initial... OKApplying django_celery_beat.0002_auto_20161118_0346... OKApplying django_celery_beat.0003_auto_20161209_0049... OKApplying django_celery_beat.0004_auto_20170221_0000... OKApplying django_celery_beat.0005_add_solarschedule_events_choices... OKApplying django_celery_beat.0006_auto_20180210_1226... OKApplying sessions.0001_initial... OK
登录后台
启动celery beat
celery -A project_name beat -l info -S django
每添加或修改一个任务,celery beat都需要重启一次,要不然新的配置不会被celery beat进程读到
转载于:https://www.cnblogs.com/FRESHMANS/p/9050311.html
django和celery结合应用相关推荐
- 任务队列:celery快速入门及django中celery的用法
文章目录 一.celey的简介 1.1 celery的工作机制 1.2 安装celery(5.2版本) 二.celery快速入门 2.1 选择broker 2.2 celery的简单使用 2.2.1 ...
- Django+redis+celery实现异步任务
1 Django中的异步请求 Django Web中从一个http请求发起,到获得响应返回html页面的流程大致如下:http请求发起 -- http handling(request解析) -- u ...
- Django 中celery的使用
1.django应用Celery django框架请求/响应的过程是同步的,框架本身无法实现异步响应. 但是我们在项目过程中会经常会遇到一些耗时的任务, 比如:发送邮件.发送短信.大数据统计等等,这些 ...
- Django配置celery执行异步任务和定时任务
原生celery,非djcelery模块,所有演示均基于Django2.0 celery是一个基于python开发的简单.灵活且可靠的分布式任务队列框架,支持使用任务队列的方式在分布式的机器/进程/线 ...
- Django 使用celery任务队列的配置
celery 情景:用户发起request,并等待response返回.在本些views中,可能需要执行一段耗时的程序,那么用户就会等待很长时间,造成不好的用户体验,比如发送邮件.手机验证码等. 使用 ...
- Django中celery配置总结
情景: 用户发起request,并等待response返回.在本些views中,可能需要执行一段耗时的程序,那么用户就会等待很长时间, 造成不好的用户体验,比如发送邮件.手机验证码等. 使用celer ...
- Django集成celery实战小项目
上一篇已经介绍了celery的基本知识,本篇以一个小项目为例,详细说明django框架如何集成celery进行开发. 本系列文章的开发环境: window 7 + python2.7 + pychar ...
- Django中Celery简介
初识Celery: Celery 是一个 基于python开发的分布式异步消息任务队列,通过它可以轻松的实现任务的异步处理,可将一些耗时的任务放入该消息队列中处理,一些定时任务也可以放入队列中自动执行 ...
- django python3 异步_详解配置Django的Celery异步之路踩坑
人生苦短,我用python. 看到这句话的时候,感觉可能确实是很深得人心,不过每每想学学,就又止步,年纪大了,感觉学什么东西都很慢,很难,精神啊注意力啊思维啊都跟不上.今天奶牛来分享自己今天踩的一个坑 ...
- Django通过celery 异步发送邮件 : django开发之天天生鲜项目知识总结【5】
这里初次学习celery,只简单讲解一下如何使用celery 异步发送邮件,在以后的总结中还会,多次提到celery,因为后面很多任务都需要用到celery执行任务,后面再专门针对celery做具体的 ...
最新文章
- 理解 Activity.runOnUiThread
- 【2012百度之星/初赛下】C:度度熊的礼物
- cf807 c 二分好题
- nx set 怎么实现的原子性_正确地使用Redis的SETNX实现锁机制
- P3527-[POI2011]MET-Meteors【整体二分,树状数组】
- CENTOS利用Keepalived构建双主MySQL+双机热备
- 一文深入了解:分布式系统中的缓存架构
- python numpy和pandas做数据分析时去掉科学记数法显示
- Java 支付对接之微信/支付宝扫码支付(也就是H5支付)
- 亲爱的波特兰——CJ麦科勒姆告别信
- 武汉大学计算机学院期末考试时间,【通知公告】关于2018-2019学年第二学期期末考试工作安排的通知...
- 使用validate注解做校验以及自定义validate注解
- 2023年中职网络安全竞赛——数字取证调查(新版)attack解析(详细)
- Heart Rate Variability Analysis with the HRV Toolkit: Basic Time and Frequency Domain Measures/背景
- 将机械硬盘换成固态硬盘的装机过程
- 最短路计数(dp+最短路)
- 如何进行自媒体创业?你是否能把握住,短视频都有哪些变现方式?
- ABP框架—项目文件介绍(2)
- ui设计界面参数_参数化设计,可以更有效地设计用户界面
- 《痞子衡嵌入式半月刊》 第 28 期
热门文章
- 智能安全实验室-杀马(Defendio) 2.5.0.430 :自定义上报威胁
- vb导入数据到mysql_用VB程序导入与导出MySQL数据的有关问题(急)
- truncate table 与delete table区别
- java补码运算代码_计算机原码、补码、反码与java移位运算符(//)
- 【渝粤教育】国家开放大学2018年秋季 1301T病理生理学 参考试题
- HMM-MEMM-CRF
- 【Python实例第9讲】物种分布模型
- UED团队建设系列之前端开发工程师:职业技能与素质
- 随手练——O(n)解决无序数组排序后的相邻最大差值
- 剑指offer例题分享--6