django python3 异步_Django中使用celery完成异步任务的示例代码

本文主要介绍如何在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

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('

请求已发送

')

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,调用任务

2> woker监听到任务请求时,就会执行耗时任务,如下图所示:

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值