当前位置: 首页 » 产品 » 微商货源 » 正文

django框架怎么集成celery进行开发

放大字体  缩小字体 发布日期: 2025-04-20 03:48   来源:http://www.baidu.com/  作者:无忧资讯  浏览次数:11
核心提示: 本篇以一个小项目为例,详细说明django框架如何集成celery进行开发。  本系列文章的开发环境:  window 7 + python2.7 + p
django框架怎么集成celery进行开发

     本篇以一个小项目为例,详细说明django框架如何集成celery进行开发。

  本系列文章的开发环境:

  window 7 + python2.7 + pycharm5 + celery3.1.25 + django1.9.4

  一、项目功能

  在web应用中,用户触发一个操作,执行后台处理程序,这个程序需要执行很长时间才能返回结果。怎样才能不阻塞http请求,不让用户等待从而提高用户体验呢?这是本例需要解决的问题。具体设计是:用两个网页进行展示,一个网页是提交加法计算任务到后台进行计算;另外一个网页查看所有计算任务的详细情况,如任务ID,任务状态等。

  就如下图所示:输入::8000/index/

django框架怎么集成celery进行开发 三联

  点击查看任务链接,查看所有任务的执行情况:sucess表示执行成功,started表示已经开始执行了。

django框架怎么集成celery进行开发

  二、项目结构

  Broker我这里选择RabbitMQ,结果存储Backend我选择django-celery。

django框架怎么集成celery进行开发

  三、开始编程

  1、安装django-celery:

  $ pip install django-celery

  2、新建django工程项目test_celery,如下:

django框架怎么集成celery进行开发

  【说明】:tools是django包,和test_celery是同级目录,该包功能主要存放工具类函数和执行的任务;

  celery.py:celery配置文件信息

  3、编辑setting.py,添加配置celery broker和backend

#celery setting import djcelery djcelery.setup_loader() #加载djcelery BROKER_URL='pyamqp://guest@localhost//' #配置broker BROKER_POOL_LIMIT=0 CELERY_RESULT_BACKEND='djcelery.backends.database:DatabaseBackend' #配置backend INSTALLED_APPS=[ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'djcelery', #django-celery必须添加 'test_celery', ] DATAbaseS={ 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'celery', 'USER':'username', 'PASSWORD':'password', 'HOST':'ip', 'PORT':3306, }}

4、新建celery.py文件,添加如下内容:

from __future__ import absolute_import import os from celery import Celery # set the default Django settings module for the 'celery' program. os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'test_celery.settings') from django.conf import settings # noqa app=Celery('test_celery') # 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))

5、新建tasks.py文件,创建任务

from __future__ import absolute_import from celery import shared_task import time @shared_task(track_started=True) def add(x, y): time.sleep(30) #模拟长时间执行 return x + y

6、创建model.py,新建存储任务信息的表:

from django.db import models #在数据库中生成test_celery_add表 class Add(models.Model): task_id=models.CharField(max_length=128) #存储taskid first=models.IntegerField() #存储第一个加数 second=models.IntegerField() #存储第二个加数 log_date=models.DateTimeField() #存储开始时间

7、进入test_celery目录下,有manage.py那一层,执行:

python manage.py makemigrations test_celery python manage.py migrate

 

到这里会在数据库中生成以下表:

django框架怎么集成celery进行开发

8、接下来编写前端html文件以及view文件。

9、编码完成后,启动worker,然后就可以在网页上进行模拟操作了 

进入test_celery项目目录下,也就是有manage.py文件那一层,执行以下命令启动worker:

celery worker -A test_celery -l info

10、在浏览器中,:8000/index/,录入第一个加数和第二个加数,点击计算,就交给后台tasks执行了,这时可以点击查看任务进行查看。 

内容来源:
 
 
[ 产品搜索 ]  [ 加入收藏 ]  [ 告诉好友 ]  [ 打印本文 ]  [ 违规举报 ]  [ 关闭窗口 ]

 

 
    行业协会  备案信息  可信网站