使用redis实现任务队列,装饰器里面的delay函数返回一个类获取结果的类用的很巧妙。
......Celery是一个分布式的任务队列,需要用其他后端作为Broker来存储消息,可选的很多,Redis,Django ORM什么的都可以,默认是用RabbitMQ来作Broker的。RabbitMQ是一个消息队列系统。
其实rq更加简单易用。https://github.com/nvie/rq
#####安装
需要[安装RabbitMQ](http://ashin.sinaapp.com/article/134/)、Celery和Django-celery
Celery和Django-celery的安装直接pip就好
#####修改settings.py
在I
......RPC全称Remote Procedure Call。即client发送消息到队列,server从队列取出消息,经过处理后将结果再返回给client。RabbitMQ的Routing、Publish/Subscribe、Worker queue模式都没有返回信息的功能。
rpcclient.py
:::python
#!/usr/bin/env python
import pika
import uuid
class FibonacciRpcClient(object):
def __init__(self):
#####下载安装
下载对应版本的RabbitMQ:http://www.rabbitmq.com/download.html
Ubuntu下载的deb安装后,RabbitMQ的Server已经在后台运行。
启动与停止server:
:::shell
$ sudo invoke-rc.d rabbitmq-server start | stop
$ sudo rabbitmq-server #运行
$ sudo rabbitmq-server -detached #后台运行
$ sudo rabbitmqctl stop #停止