Django中使用celery完成异步任务的示例代码

Django中使用celery完成异步任务的示例代码,第1张

概述本文主要介绍如何在django中用celery完成异步任务,web项目中为了提高用户体验可以对一些耗时 *** 作放到异步队列中去执行,例如激活邮件,后台计算 *** 作等等当前项目环境为:django==1.11.8celery==3.1.25redis==2.10.6

本文主要介绍如何在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 Celeryfrom django.conf import settingsimport 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 appfrom time import sleep@app.taskdef 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 VIEwfrom django.http import httpResponsefrom .tasks import start_runningfrom 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 urlfrom .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中使用celery完成异步任务的示例代码全部内容,希望文章能够帮你解决Django中使用celery完成异步任务的示例代码所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1204727.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-04
下一篇 2022-06-04

发表评论

登录后才能评论

评论列表(0条)

保存