Celery 使用(一)】的更多相关文章

前段时间在Django Web平台开发中,碰到一些请求执行的任务时间较长(几分钟),为了加快用户的响应时间,因此决定采用异步任务的方式在后台执行这些任务.在同事的指引下接触了Celery这个异步任务队列框架,鉴于网上关于Celery和Django结合的文档较少,大部分也只是粗粗介绍了大概的流程,在实践过程中还是遇到了不少坑,希望记录下来帮助有需要的朋友. 一.Django中的异步请求 Django Web中从一个http请求发起,到获得响应返回html页面的流程大致如下:http请求发起 --…
纯粹是记录一下自己在刚开始使用的时候遇到的一些坑,以及自己是怎样通过配合redis来解决问题的.文章分为三个部分,一是怎样跑起来,并且怎样监控相关的队列和任务:二是遇到的几个坑:三是给一些自己配合redis使用的代码示例. 一.celery使用: Ⅰ.把任务中间件服务器跑起来,rabbitmq-server 跑起来以后,就能在浏览器(http://localhost:15672/#/queues)里面看中间件里面的相关内容了. (如果想把这边的某些队列下面的没有跑完的任务丢弃掉的话,进对应的队列…
随着公司业务的发展,网站的日活数也逐渐增多,以前只需要考虑将所需要的功能实现就行了,当日活越来越大的时候,就需要考虑对服务器的资源使用消耗情况有一个清楚的认知.     最近老是发现数据库的连接数如果几天不重启服务器,就经常会发现有很多sleep很久的数据库连接,对数据库服务器的性能有较大的影响.所以需要知道我们的数据库连接到底是在哪里被创建的,什么时候会被复用,什么时候会被释放.     测试的时候使用的代码,适当进行调整,可帮助梳理清楚场景. from sqlalchemy.ext.decl…
转自:http://www.cnblogs.com/forward-wang/p/5970806.html 生产者消费者模式 在实际的软件开发过程中,经常会碰到如下场景:某个模块负责产生数据,这些数据由另一个模块来负责处理(此处的模块是广义的,可以是类.函数.线程.进程等).产生数据的模块,就形象地称为生产者:而处理数据的模块,就称为消费者. 单单抽象出生产者和消费者,还够不上是生产者消费者模式.该模式还需要有一个缓冲区处于生产者和消费者之间,作为一个中介.生产者把数据放入缓冲区,而消费者从缓冲…
1.celery4.0以上不支持windows,用pip安装celery 2.启动redis-server.exe服务 3.编辑运行celery_blog2.py !/usr/bin/python coding:utf-8 import requests import time from celery import Celery app = Celery('celery_blog2', broker='redis://localhost:6379/1') @app.task def fetch_…
http://www.cnblogs.com/ToDoToTry/p/5453149.html Celery的实践指南   Celery的实践指南 celery原理: celery实际上是实现了一个典型的生产者-消费者模型的消息处理/任务调度统,消费者(worker)和生产者(client)都可以有任意个,他们通过消息系统(broker)来通信. 典型的场景为: 客户端启动一个进程(生产者),当用户的某些操作耗时较长或者比较频繁时,考虑接入本消息系统,发送一个task任务给broker. 后台启…
This document describes the current stable version of Celery (4.0). For development docs, go here. First steps with Django¶ Using Celery with Django Note Previous versions of Celery required a separate library to work with Django, but since 3.1 this…
耗时大概6小时. 执行 pip install celery 之后, 在 mac 上 celery 可以正常运行, 在 centos 6u3 上报错如下: Traceback (most recent call last): File "/home/work/collie/venv/bin/celery", line 11, in <module> sys.exit(main()) File "/home/work/collie/venv/lib/python2.…
这里有一篇写的不错的:http://www.jianshu.com/p/1840035cb510 自己的"格式化"后的内容备忘下: 我们总在说c10k的问题, 也做了不少优化, 然后优化总是不够的. 其中的一个瓶颈就是一些耗时的操作(网络请求/文件操作--含耗时的数据库操作). 如果我们不关心他们的返回值,则可以将其做成异步任务,保证执行成功即可. 开始阐述之前约定一些概念: 1. web请求处理进程(简称:消息生产者,记做P), 这是我们c10k问题注意的焦点 2. 消息的处理者(简…
在学习Celery之前,我先简单的去了解了一下什么是生产者消费者模式. 生产者消费者模式 在实际的软件开发过程中,经常会碰到如下场景:某个模块负责产生数据,这些数据由另一个模块来负责处理(此处的模块是广义的,可以是类.函数.线程.进程等).产生数据的模块,就形象地称为生产者:而处理数据的模块,就称为消费者. 单单抽象出生产者和消费者,还够不上是生产者消费者模式.该模式还需要有一个缓冲区处于生产者和消费者之间,作为一个中介.生产者把数据放入缓冲区,而消费者从缓冲区取出数据,如下图所示: 生产者消费…
redis http://debugo.com/python-redis celery http://docs.jinkan.org/docs/celery/getting-started/introduction.html http://liuzxc.github.io/blog/celery/ https://realpython.com/blog/python/flask-by-example-implementing-a-redis-task-queue http://liuzxc.gi…
参考:http://blog.csdn.net/wawa8899/article/details/52743861 参考:http://www.cnblogs.com/mountaingeek/p/5911291.html 参考:http://www.linuxyw.com/718.html 参考:http://www.iitshare.com/supervisord-manage-process.html 参考:http://stackoverflow.com/questions/203468…
参考:http://www.cnblogs.com/znicy/p/5626040.html 参考:http://www.weiguda.com/blog/73/ 参考:http://blog.csdn.net/iloveyin/article/details/44940931 django.celery.django-celery.kombu.amqp最好统一pip安装,我用django 1.8.6和较低版本celery时候出现报错: /usr/local/lib/python2./site-…
After running celery in my machine, I got this: Running a worker with superuser privileges when the worker accepts messages serialized with pickle is a very bad idea! If you really want to continue then you have to set the C_FORCE_ROOT environment va…
前言 很久没更博客了,最近新写了一个小项目,后边有时间把一些心得放上来,先把环境的部署方式整理出来. 部署过程 先将环境的python升级为2.7 保证有pip 安装了nginx并配置 vim /Data/apps/nginx/conf/include/sqlaudit.conf server { listen 80; #对外80端口 server_name sqladmin.xxxx.net; location / { root /Data/apps/djangoproject/sqlaudi…
首先我本机测试时没有问题的,但是在线上docker中,任务一直显示 "Sending due task".超时的任务是 django orm update 操作,本地不会出现这样的问题. 1. 是不是共用了redis db而不知情? 可能是别人也用这个 redis db 作为 broker,然后比人的任务很多并且排在了我的前面,而我又设置了超时时间 CELERYD_TASK_SOFT_TIME_LIMIT = 20 .于是我将 redis db 改为 61,重启后报错: invalid…
Django中Celery的实现 Celery官网http://www.celeryproject.org/ 学习资料:http://docs.jinkan.org/docs/celery/ Celery介绍 Celery是基于Python开发的一个分布式任务队列框架,支持使用任务队列的方式在分布的机器/进程/线程上执行任务调度.…
Celery 分布式的任务队列 与rabbitmq消息队列的区别与联系: rabbitmq 调度的是消息,而Celery调度的是任务. Celery调度任务时,需要传递参数信息,传输载体可以选择rabbitmq. 利用rabbitmq的持久化和ack特性,Celery可以保证任务的可靠性. 优点: 轻松构建分布式的Service Provider. 高可扩展性,增加worker也就是增加了队列的consumer. 可靠性,利用消息队列的durable和ack,可以尽可能降低消息丢失的概率,当wo…
原文:http://www.dongwm.com/archives/shi-yong-celeryzhi-shen-ru-celerypei-zhi/ 前言 celery的官方文档其实相对还是写的很不错的.但是在一些深层次的使用上面却显得杂乱甚至就没有某些方面的介绍, 通过我的一个测试环境的settings.py来说明一些使用celery的技巧和解决办法 amqp交换类型 其实一共有4种交换类型,还有默认类型和自定义类型. 但是对我们配置队列只会用到其中之三,我来一个个说明,英语好的话可以直接去…
Celery 是一个广泛应用于网络应用程序的任务处理系统. 它可以在以下情况下使用: 在请求响应周期中做网络调用.服务器应当立即响应任何网络请求.如果在请求响应周期内需要进行网络调用,则应在周期外完成调用.例如当用户在网站上注册时,需要发送激活邮件.发送邮件是一种网络调用,耗时2到3秒.用户应该无需等待这2到3秒.因此,发送激活邮件应当在请求响应周期外完成,celery 就能实现这一点. 将一个由几个独立部分组成的大任务分成多个小任务.假设你想知道脸书用户的时间流.脸书提供不同的端点来获取不同的…
Celery是Python开发的分布式任务调度模块,今天抽空看了一下,果然接口简单,开发容易,5分钟就写出了一个异步发送邮件的服务. Celery本身不含消息服务,它使用第三方消息服务来传递任务,目前,Celery支持的消息服务有RabbitMQ.Redis甚至是数据库,当然Redis应该是最佳选择. 安装Celery 用pip或easy_install安装: $ sudo pip install Celery 或着: $ sudo easy_install Celery 使用Redis作为Br…
惯例先贴出相关参考的文档: http://docs.celeryproject.org/en/stable/getting-started/next-steps.html http://docs.celeryproject.org/en/stable/userguide/tasks.html#task-result-backends 这篇紧接上篇. 其实我们一般对这种异步任务需求是可能需要回调的.比如说我现在有一个支付的异步任务发送到了队列. 生产者不需要等待,在发送到队列之后就告诉用户已经支付…
讲过一篇celery的,但是celery启动后并不是daemon的,在生产环境中这肯定是不可以的,那怎么办呢? 这就需要使用supervisor进行进程管理了,下面详细介绍. 一. supervisor是干什么的. supervisor是有Python语言编写的,基于linux操作系统的一款服务器管理工具,用以监控服务器进程的运行. supervisor要求管理的程序是非daemon程序,supervisord会帮你把他转换成daemon程序. 因此如果使用supervisor来管理nginx进…
celery是用python写的一个异步的任务框架,功能非常强大,具体的说明可以查看官网,这里主要提供点demo让你迅速使用该框架   1.环境安装 默认安装好了redis pip install celery redis 用来作为任务消息的载体   2. tasks.py import sys reload(sys) sys.setdefaultencoding('utf-8') # 不加这句话,打印中文log会出错 from celery import Celery celery = Cel…
写作背景介绍 在celery简单应用中已经介绍了如何去配置一个celery应用,也知道怎么分离任务逻辑代码与客户端代码了.我们现在的任务是怎么把计算结果保存到数据库中,这种数据持久化是非常重要的.你一定不希望自己千辛万苦的挖掘到的数据就因为电脑关机或者断电就丢失掉了.这时候我们想到的第一个办法大概就是通过数据库保存我们的数据了.现在我们就来使用mongodb保存我们的数据吧! 第一步 如果你是初学者建议你从celery简单应用开始,虽然这篇文章的代码是完全独立的,但是要是想理解每一行代码从头学习…
写作背景介绍 在celery简单入门中已经介绍了写作的背景,这篇文章主要是深入介绍celery的使用技巧.在实际的项目中我们需要明确前后台的分界线,因此我们的celery编写的时候就应该是分成前后台两个部分编写.在celery简单入门中的总结部分我们也提出了另外一个问题,就是需要分离celery的配置文件. 第一步 编写后台任务tasks.py脚本文件.在这个文件中我们不需要再声明celery的实例,我们只需要导入其task装饰器来注册我们的任务即可.后台处理业务逻辑完全独立于前台,这里只是简单…
写作背景介绍 最近在做后台图像处理,需要使用到celery这个异步任务框架.但是使用的时候遇到很多技术问题,为了方便日后再遇到相似问题时能够快速解决.写下这篇文章也希望能够帮助共同奋战在同一战线的程序员们.这篇是入门级的文章,如果你已经使用过celery开发过项目完全可以忽略它.当然也非常欢迎你给我留下你宝贵的意见.下一篇文章将会深入一点,期待能再次看到你. Celery环境搭建 celery是异步处理框架,我们需要一个消息队列来下发我们的任务.使用RabbitMQ是官方特别推荐的方式,因此我也…
当然首先得安装celery和rabbitmq-server,如果有redis需要安装redis 安装Redis $ yum install redis 启动 Redis $redis-server 检查Redis是否在工作? $redis-cli 这将打开一个Redis提示,如下图所示: redis 127.0.0.1:6379> 上面的提示127.0.0.1是本机的IP地址,6379为Redis服务器运行的端口.现在输入PING命令,如下图所示. redis 127.0.0.1:6379>…
If you've worked with Django at some point you probably had the need for some background processing of long running tasks. Chances are you've used some sort of task queue, and Celery is currently the most popular project for this sort of thing in the…
celery 学习笔记 01-介绍 celery 是 python 中的常用的任务队列框架,经常用于异步调用.后台任务等工作.celery 本身以 python 写,但协议可在不同的语言中实现,其它语言也可以用 celery 执行相应的任务.在 web 应用,为提高系统响应速度,发送邮件.数据整理等需要长时间执行的任务,通常以异步任务的方式执行,这时就需要用到像 celery 类的框架.另一种常见的场景是大型系统的分布式处理,为了提升系统性能,各个组件通常以多个实例运行不同主机上,而组件之间的调…