django使用celery异步

本文详细介绍如何在Window10环境下,使用Python2.7和Django1.11.13集成Celery异步任务处理框架。文章涵盖安装过程、配置步骤、任务定义与调用,以及运行Celery worker的方法。

开发环境:window10,python2.7,django1.11.13,

安装:pip install celery-with-redis,pip install celery,pip install django-celery,pip install redis

          redis安装链接:https//github.com/MSOpenTech/redis。找到Redis-x64-3.2.100.msi

目录结构:

- djangoDemo
  - djangoDemo
    setting.py
    wsgi.py
    urls.py
  - app
    models.py
    views.py
    ...

配置setting.py

INSTALLED_APPS = (
    ...
    'app',
    'djcelery',
)


BROKER_URL = 'redis://127.0.0.1:6379/0'
BROKER_TRANSPORT = 'redis'

CELERYBEAT_SCHEDULER = 'djcelery.schedulers.DatabaseScheduler'  

创建PY文件在djangoDemo / djangoDemo / celery.py目录下:

# encoding: utf-8
from __future__ import absolute_import,unicode_literals
import os
from celery import Celery
from django.conf import settings
# set the default Django settings module for the 'celery' program.
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'djangoDemo.settings')
app = Celery('djangoDemo')
# Using a string here means the worker will not have to
# pickle the object when using Windows.
app.config_from_object('django.conf:settings')
app.autodiscover_tasks(lambda: settings.INSTALLED_APPS)

@app.task(bind=True)
def debug_task(self):
    print('Request: {0!r}'.format(self.request))

创建djangoDemo /应用程序/ tasks.py

from __future__ import absolute_import
from djangoDemo.celery import app
@app.task
def add(x, y):
   return x+y

view.py中使用

from django.shortcuts import render, HttpResponse

from app.tasks import add

from djangoDemo.celery import app
def tests(request):
    result = add.delay(2,4)
    #获取id
    ids = result.id
    #获取执行状态
    sget = result.state
    #返回执行状态
    state = app.AsyncResult(ids).state
    #返回执行结果
    results = app.AsyncResult(ids).result
    return HttpResponse(results)

url.py配置

  url(r'^tests/', views.tests),

启动django

python manage.py runserver

启动celery

python manage.py celery worker -c 4 --loglevel=info

 测试:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值