Django中使用celery完成异步任务的示例代码
- 更新时间:2022-09-07 08:49:22
- 编辑:陆念薇
参考资料
- Python高效开发实战:Django、Tornado、Flask、Twisted PDF 电子书 / 107.6 MB / 刘长龙 推荐度:
- Django开发宝典 PDF 电子书 / 85.5 MB / 王友钊、黄静 推荐度:
- 玩转Django 2.0 PDF 电子书 / 64.9 MB / 黄永祥 推荐度:
正文内容
本文主要介绍如何在django中用celery完成异步任务,web项目中为了提高用户体验可以对一些耗时操作放到异步队列中去执行,例如激活邮件,后台计算操作等等 当前项目环境为: django==1.11.8 celery==3.1.25 redis==2.10.6 pip==9.0.1 python3==3.5.2 django-celery==3.1.17
一,创建Django项目及celery配置
1,创建Django项目
1>打开终端输入:django-admin startproject TestCelery 创建django项目('TestCelery'是项目名称)
2>进行TestCelery在终端输入指令:django-admin startapp testcelery 创建应用('testcelery为应用名称')
2, 为celery设置环境变量
1>项目中在TestCelery中创建celery.py文件(与setting.py同级)输入以下内容:
from celery import Celery from django.conf import settings import os # 为celery设置环境变量 os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'TestCelery.settings') # 创建应用 app = Celery('testcelery') # 酸配置应用 app.conf.update( # 本地Redis服务器 BROKER_URL='redis://127.0.0.1:6379/2', ) app.autodiscover_tasks(settings.INSTALLED_APPS)
2>当前项目目录如下图所示:
二,创建任务tasks,编写视图View及urls
1, 在testcelery应用中新建tasks.py文件,并写入要进行处理的任务:
from TestCelery.celery import app from time import sleep @app.task def start_running(nums): print('***>%s<***' %nums) print('--->>开始执行任务<<---') for i in range(10): print('>>'*(i+1)) sleep(1) print('>---任务结束---<')
2,编写view视图,并写入调用client的方法
from django.views import View from django.http import HttpResponse from .tasks import start_running from time import sleep # Create your views here. class IdexView(View): def get(self, request): print('>=====开始发送请求=====<') for i in range(10): print('>>',end='') sleep(0.1) start_running.delay('》》》》》我是传送过来的《《《《《') return HttpResponse('<h2> 请求已发送 </h2>')
3,编写testcelery应用的usrls
from django.conf.urls import url from .views import * urlpatterns = [ url(r'^$', IdexView.as_view()), ]
4,当前项目目录如下图所示:
三,运行项目,开启worker
1, 运行项目在当前项目下输入启动服务指令:python manager.py runserver,出现如下图所示即代表运行成功:
2,开启worker另在当前项目下另打开一个终端,输入指令: celery -A TestCelery worker --loglevel=DEBUG,启动后如下如示:
3,调用任务
1>打开浏览器,输入http://127.0.0.1:8000/send/ 进行访问
2> woker监听到任务请求时,就会执行耗时任务,如下图所示:
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持码农之家。
Django相关教程
-
django 类视图用法示例代码
这篇文章主要介绍了django 类视图的使用方法详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
发布时间:2020-03-20
-
django实现用户登录注册系统实例代码
这篇文章主要介绍了django的登录注册系统的示例代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
发布时间:2020-01-21
-
django rest framework实现用户登录认证实例代码分析
这篇文章主要介绍了django rest framework 实现用户登录认证详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
发布时间:2019-11-27
-
实例讲解django xadmin自定义菜单
今天小编就为大家分享一篇对django xadmin自定义菜单的实例详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
发布时间:2020-02-16
-
Django URL传递参数实例代码
这篇文章主要介绍了Django URL传递参数的方法总结,需要的朋友可以参考下
发布时间:2020-01-25
-
Django缓存之配置Redis
这篇文章主要介绍了Django 缓存配置Redis使用详解,缓存是将一些常用的数据保存内存或者memcache中,在一定的时间内有用户来访问这些数据时,则不再去执行数据库及渲染等操作,而是直接从内
发布时间:2020-02-29
-
介绍django实现用户登陆功能
这篇文章主要介绍了django实现用户登陆功能详解,具有一定借鉴价值,需要的朋友可以参考下。
发布时间:2020-03-19
-
django开发之settings.py中变量的全局引用效果示例
当网站里面的一些内容,如邮箱,网站标题,网站的描述,这些东西我们可以存在数据库中也可以存放在我们的setting 文件中,这篇文章主要给大家介绍了django中settings.py变量的全局引用的相关
发布时间:2020-01-14
-
django实现微信网页授权登陆实例代码
这篇文章主要介绍了django 微信网页授权登陆的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
发布时间:2019-11-07