Django 1.5.4 专题23 Celery RabbitMQ
来源:互联网 发布:监控安装设计软件 编辑:程序博客网 时间:2024/05/16 06:33
celery(芹菜)是一个异步任务队列/基于分布式消息传递的作业队列。它侧重于实时操作,但对调度支持也很好。
celery用于生产系统每天处理数以百万计的任务。
celery是用Python编写的,但该协议可以在任何语言实现。它也可以与其他语言通过webhooks实现。
建议的消息代理RabbitMQ一.安装
aptitude install rabbitmq-serverrabbitmqctl add_user mike cheeserabbitmqctl add_vhost /django_tutorialsrabbitmqctl set_permissions -p /django_tutorials mike ".*" ".*" ".*"/etc/init.d/rabbitmq-server stop/etc/init.d/rabbitmq-server startpip install celery django-celery
二.新建app
manage.py startapp celery_test
三.修改settings.py
二.修改celery_test/models.py
from django.db import modelsclass CounterModel(models.Model): count = models.IntegerField(default=0) def __unicode__(self): return unicode(self.count)
三.修改celery_test/tasks.py
from celery.task import taskfrom celery import current_taskfrom celery_test.models import CounterModelfrom time import sleep@task()def add_two_numbers(a, b): """This is where you do the bulk of the your queued task needs to do""" sleep(10) count = CounterModel.objects.create(count = a + b) return count@task()def do_something_long(): for i in range(100): sleep(0.2) current_task.update_state(state="PROGRESS", meta={'current':i, 'total':100})
四.运行
manage.py schemamigration celery_test --initialmanage.py migratemanage.py celeryd -l infomanage.py shell
运行celeryd -l info 要保存窗口状态,另外打开新窗口
五.修改django_test/views.py
from django.http import HttpResponseRedirect,HttpResponsefrom celery.result import AsyncResultfrom celery_test.tasks import do_something_longfrom django.core.urlresolvers import reversefrom django.utils import simplejson as jsondef start_celery_task(request): task = do_something_long.delay() return HttpResponseRedirect( "%s%s" % ('/celery_progress?task_id=', task.id) ) def monitor_celery_task(request): if 'task_id' in request.GET: task_id = request.GET['task_id'] else: return HttpResponse('No task_id passed.') task = AsyncResult(task_id) data = task.result or task.state return HttpResponse(json.dumps(data), mimetype='application/json')
六.修改django_test/urls.py
url(r'^celery_test/', 'django_test.views.start_celery_task'),url(r'^celery_progress/', 'django_test.views.monitor_celery_task'),
- Django 1.5.4 专题23 Celery RabbitMQ
- Django + Celery + Rabbitmq setting
- celery + rabbitmq + django
- django+celery+RabbitMQ 环境配置
- Django+Rabbitmq+Celery 框架学习
- 使用 django+celery+RabbitMQ 实现异步执行
- 使用django+celery+RabbitMQ实现异步执行
- 使用 django+celery+RabbitMQ 实现异步执行
- python安装包制作|Django+Celery+Rabbitmq
- 使用django+celery+RabbitMQ实现异步执行
- Nginx+uwsgi+django+RabbitMQ+celery安装配置
- OJ2.0 Django+Rabbitmq+Celery配置
- HOWTO django + celery + rabbitmq simple setup for testing purpose
- Celery(3):Celery+Django
- Celery+RabbitMQ快速入门
- Celery 和 RabbitMQ
- celery、rabbitmq的使用
- Celery与RabbitMQ、Redis
- cassandra初次使用之添加数据和得到数据
- 制作一个玻璃球
- 大道PHP+LAMP+ZEND+开源框架整合开发与实战|pdf电子书(100m)
- Linux shell编程 13 ---- 子Shell与进程处理
- Ubuntu下利用scp在虚拟机和主机之间传输文件
- Django 1.5.4 专题23 Celery RabbitMQ
- 写博客好习惯的开始
- epoll-linux提高并发服务器效率
- MySQL增删改查
- apt-get下载安装本地包
- Java反编译工具Jad及插件JadClipse配置
- 字符集
- kernel BUG at mm/slab.c
- Apache启动不了,httpd: apr_sockaddr_info_get() failed for apache 启动问题