`

django异步任务celery,分布式队列(redis/rabbitmq)

阅读更多

         异步任务用提celery.

         队列用的是redis,rabbitmq两种

        

        celery思路:

              (1)引用celery

    #coding:utf-8

from __future__ import absolute_import
from celery import Celery

app = Celery('T1',include=['T1.tasks','T1.call_tasks'])
app.config_from_object('T1.config')

if __name__ ==  '__main__':
    app.start()

              (2)引用celery配置

#coding:utf-8

from __future__ import absolute_import
from datetime import timedelta
from  time import  timezone

CELERY_RESULT_BACKEND = 'redis://127.0.0.1:6379/1'
BROKER_URL = 'redis://127.0.0.1:6379/0'

CELERY_TASK_SERIALIZER='json'
CELERY_ACCEPT_CONTENT=['json']
CELERY_RESULT_SERIALIZER='json'
CELERY_TIMEZONE='Europe/Oslo'
CELERY_ENABLE_UTC=True

CELERYBEAT_SCHEDULE = {
    'add-every-5-seconds':{
        'task':'T1.tasks.add',
        'schedule':timedelta(seconds=5),
        'args':(16,16),
    },
    'add-every-10-seconds':{
        'task':'T1.call_tasks.call_tasks',
        'schedule':timedelta(seconds=10),
        'args':(16,16),
    },
    'add-every-10-seconds':{
        'task':'T1.call_tasks.call_task2',
        'schedule':timedelta(seconds=10),
        'args':(16,16),
    }


}

              (3)

    把任务放进celery

    #coding:utf-8

from __future__ import absolute_import
from T1.celery import app
# brokers = 'redis://127.0.0.1:6379/0'
# backend = 'redis://127.0.0.1:6379/1'
#
# app = Celery('tasks',broker=brokers,backend=backend)

@app.task
def add(x,y):
    z = x+y
    return z

              (4)

   调用的任务也放进celery并定时跑

#coding:utf-8
from __future__ import absolute_import
from T1.tasks import add
from T1.celery import app
import json


@app.task
def call_tasks(n=100,m=200):
    r = add.delay(2,6)
    with open('/Users/admin/devops/Django_T1/celery.txt','wb+') as f:
        f.write(str(r.ready())+str("结果是:"+str(r.get()))+"\r\n")

@app.task
def call_task2(n=100,m=200):
    r = add.delay(3,6)
    with open('/Users/admin/devops/Django_T1/celery.txt','wb+') as f:
        f.write(str(r.ready())+str("结果是:"+str(r.get()))+"\r\n")


 

      启动redis

      运行celery

      celery -A T1 worker -B -l info

     

      运行结果:

      False结果是:9

False结果是:9

False结果是:9

False结果是:9

False结果是:9

False结果是:9

False结果是:9

False结果是:9

False结果是:9

False结果是:9

False结果是:9

False结果是:9

False结果是:9

False结果是:9

False结果是:9

False结果是:9

True结果是:9

False结果是:9

False结果是:9

False结果是:9

 

         生产者,消费者 放在redis是一次消费,一次取了,就没了

 

         以上是基于redis的队列。下面是基于rabbitmq的队列

         思路是一样的,只是安装rabbitmq比较费点时间

         rabbitmq 安装及异常处理

        http://hugoren.iteye.com/blogs/2303162

        

reference:

http://www.jianshu.com/p/1840035cb510

http://docs.jinkan.org/docs/celery/index.html 

 

分享到:
评论

相关推荐

    django+celery+redis+supervisor教程代码

    这个教程旨在教你如何使用Django作为Web框架,Celery作为异步任务队列,Redis作为消息中间件,以及Supervisor作为进程监控工具来构建高效、可扩展的应用。 1. Django: Django是Python的一款高级Web框架,它遵循...

    详解django+django-celery+celery的整合实战

    Celery 是一款强大的分布式任务队列系统,主要用于处理大量的后台任务,包括但不限于异步任务处理和定时任务调度。其核心设计旨在帮助开发者实现业务逻辑中的任务与主程序之间的解耦,从而使得任务的执行可以脱离主...

    Django Celery异步任务队列的实现

    Celery是一个基于分布式消息传递的异步任务队列,它可以与多种消息中间件(如RabbitMQ、Redis等)配合使用。在这个例子中,我们选择RabbitMQ作为消息代理,通过Docker进行安装: ```bash docker run -d --name anno...

    django、celery、redis部署定时任务(实现多work、多队列).pdf

    首先,Celery是一个基于消息队列的异步任务队列/作业队列,它主要用于处理大量消息的分布式系统。Celery本身不是任务队列,而是用来管理分布式任务队列的工具。它封装了操作常见任务队列的各种操作,使开发者可以...

    基于Django+Celery队列实现的集中化异步任务调度系统,

    本项目“基于Django+Celery队列实现的集中化异步任务调度系统”旨在提供一个易于集成的框架,帮助开发者快速在Django项目中实现异步任务处理,降低业务代码的复杂性。 Django是Python领域广泛使用的Web框架,以其...

    Django使用Celery加redis执行异步任务的实例内容

    在Django框架中,通过集成Celery和Redis,我们可以实现异步任务处理,从而提高应用的响应速度和用户体验。以下将详细介绍如何在Django中配置和使用Celery与Redis来执行异步任务。 首先,Celery是一个分布式任务队列...

    详解分布式任务队列Celery使用说明

    【分布式任务队列Celery详解】 Celery是一个强大的分布式任务队列系统,它设计用于处理大量消息,并且具有高可靠性和灵活性。Celery的核心功能是实现实时任务处理和任务调度,采用生产者-消费者模式运行。在这个...

    我的django专栏029阶段Celery消息队列的配置和实现的源码

    Celery是一个分布式任务队列,广泛用于处理异步任务,提高Web应用的响应速度和可扩展性。在Django项目中,Celery可以帮助我们有效地管理耗时操作,如发送邮件、图像处理等。 首先,我们需要安装Celery和一个消息...

    使用celery和Django处理异步任务的流程分析

    Celery是一个分布式任务队列,它专注于实时任务处理,并提供任务调度功能。它的核心特性包括快速、简单、高可用和灵活。Celery的工作机制是通过消息传递系统(如Redis或RabbitMQ)来发送和接收任务消息。这样,任务...

    Django异步任务之Celery的基本使用

    Celery是一个流行的开源任务队列,它支持多种消息代理,如RabbitMQ和Redis,使得分布式任务调度变得简单。在Django中集成Celery,我们可以实现高效、可扩展的异步任务处理。 首先,为了安装Celery,我们需要在项目...

    django_celery_demo

    Django 是一个广受欢迎的 Python Web 开发框架,而 Celery 是一个分布式任务队列,特别适用于处理后台异步任务,如发送邮件、图片处理等。 【描述】"希望能帮到需要的人" 表明这个项目是作者为了分享和帮助那些在 ...

    django-celery

    【django-celery】是一个基于Python的开源框架,它将流行的Web框架Django与任务队列Celery相结合,用于处理异步任务和分布式工作负载。Celery的核心是其任务队列系统,它允许开发者在不阻塞主线程的情况下执行耗时...

    异步任务队列Celery在Django中的使用方法

    Celery是一个由Python编写的分布式任务队列,支持多种消息中间件(如RabbitMQ、Redis等)作为broker,将任务分发给worker处理。worker可以部署在多台机器上,实现任务的并行处理。Celery还提供了backend来存储任务...

    Python库 | django_celery_results-2.2.0.tar.gz

    Celery通过消息传递机制(如RabbitMQ或Redis)进行任务分发和结果接收,使得任务可以在不同的进程甚至机器之间进行分布执行。 `django_celery_results`库的作用就在于连接这两个强大的工具。它为Celery任务提供了在...

    Django使用Celery异步任务队列的使用

    Celery是一个强大的、可靠的、简单易用的异步任务队列/作业队列,基于分布式消息传递。它专注于实时操作,但也支持任务调度。Celery在Django项目中得到了广泛的应用,因为它能够很容易地与Django框架集成,允许...

    使用Celery的Django异步信号处理。_Python_下载.zip

    Celery是一个强大的分布式任务队列,它允许我们在Django应用中轻松地实现异步任务,包括信号处理。本篇文章将深入探讨如何在Django中结合Celery来处理异步信号。 首先,让我们理解什么是Django信号。Django信号是...

    celery异步任务构建

    Celery是一个基于分布式消息传递的异步任务队列,它适用于Python编程语言。结合中间件如Redis,可以构建出高效的异步任务处理系统,极大地提高了程序的响应速度和用户体验。 首先,我们要理解Celery的基本概念。...

    基于python+Django的异步任务分发处理系统 主要是提供创建异步任务,处理异步任务,结果写入数据库。.zip

    3. Celery:在Django中,Celery是一个常用的分布式任务队列,它可以配合RabbitMQ、Redis等消息中间件来处理异步任务。Celery提供了任务调度、结果跟踪等功能,适合大型项目的任务分发。 4. 数据库交互:项目中任务...

Global site tag (gtag.js) - Google Analytics