Django中使用celery完成异步任务


声明:本文转载自https://my.oschina.net/Kuture/blog/1611371,转载目的在于传递更多信息,仅供学习交流之用。如有侵权行为,请联系我,我会及时删除。

一,创建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监听到任务请求时,就会执行耗时任务,如下图所示:

        

 

 

本文发表于2018年01月23日 12:32
(c)注:本文转载自https://my.oschina.net/Kuture/blog/1611371,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如有侵权行为,请联系我们,我们会及时删除.

阅读 1706 讨论 0 喜欢 0

抢先体验

扫码体验
趣味小程序
文字表情生成器

闪念胶囊

你要过得好哇,这样我才能恨你啊,你要是过得不好,我都不知道该恨你还是拥抱你啊。

直抵黄龙府,与诸君痛饮尔。

那时陪伴我的人啊,你们如今在何方。

不出意外的话,我们再也不会见了,祝你前程似锦。

这世界真好,吃野东西也要留出这条命来看看

快捷链接
网站地图
提交友链
Copyright © 2016 - 2021 Cion.
All Rights Reserved.
京ICP备2021004668号-1