Django+Celery+Rabbitmq+Flower使用小记
之前的博客中简单的介绍了celery的安装配置以及如何在python程序中使用,这里记录一下我使用django结合celery以及rabbitmq提供web服务,同时使用flower进行监控的过程。至于这几样东西是什么、怎么安装这里就不再细说了。
之前的博客中简单的介绍了celery的安装配置以及如何在python程序中使用,这里记录一下我使用django结合celery以及rabbitmq提供web服务,同时使用flower进行监控的过程。至于这几样东西是什么、怎么安装这里就不再细说了。
程序中很常见的一种场景就是根据某个控制变量的值来调用不同的函数或对象进行处理,某些语言中可以使用case语句进行处理,在python可以使用getattr函数甚至if…elif…else来处理,除此之外,也可以使用字典来实现相同的功能,比如下面的例子:
animals = []
number_of_felines = 0
def deal_cat():
global number_of_felines
print "meow"
animals.append('feline')
number_of_felines += 1
def deal_dog():
print 'bark'
animals.append('canine')
def deal_bear():
print "hug"
animals.append('ursine')
token = {'cat': deal_cat, 'dog': deal_dog, 'bear': deal_bear}
#words = ['cat', 'dog', 'bear']
words = ['cat', 'dog', 'bear', 'cat']
for one in words:
token[one]()
#return token[one]()
nf = number_of_felines
print 'we met %d feline%s' % (nf, 's'[nf == 1:])
print 'the animals we net were:', ' '.join(animals)
之前的博客有关于celery以及相关概念的介绍,不过那篇文章没有具体的使用示例,今天补充一下。
目前celery的版本是3.1.19。
这里我使用rabbitmq作为broker以及banckend。
官网在这里,英语好的直接去看官网文档吧,我是英语渣只能翻译个大概;另外注意本文翻译时间,可能你看到的时候官网已经更新了。
flask-socketio赋予了flask程序支持服务端和客户端间双向低延迟通讯的能力,客户端可以使用 SocketIO 库或任何支持与服务端建立长链接的兼容库。
可以直接使用pip安装:
pip install flask-socketio
自从1.0版开始,这个扩展完全兼容了python2.7和python3.3+版本。异步服务的支持基于下面3个选择中的一个:
目前flask-socketio只能同时运行在单个进程中(这里应该指的是一个进程中仅能存在一个实例的意思,而非只能开启一个进程吧…),解决这个限制的工作正在进行中。 (关于升级变化、以及从老版本迁移到新版的注意事项我就不翻译了,因为没用过老版本)