背景
最近写的一个数据监控采集服务,需要使用定时任务。而又不想把定时任务交给crontab处理(需要分散维护)。而且,暂时不想使用gevent, twisted这么重的包包含进来。那么剩下的选择显而易见的就是celery了。
celery是python阵营中的分布式消息队里,也可以用来做定时任务处理。强在分布式,而且对于broker不挑食。可以使用rabbitmq, redis 甚至数据库等等。
而目前我的环境还是不熟rabbitmq比较方便。(恩,因为我是erlang爱好者。。。)
安装celery
因为选择了 rabbitmq 作为broker,那么首先要解决的就是erlang环境。
erlang
安装erlang相对简单,无非就是源不多,下载源码包较慢。具体可参考www.erlang.org。在download页面中选择符合自己版本的进行下载。完了之后,解压,并根据提示make, make install即可。
tips:
- 在
./configure
的时候如果出现No curses library found
。则需要安装ncurses包。安装方法请根据平台自行百度(centos中 yum install ncurses即可) - 安装了之后,输入erl提示
command not found
。这个是因为默认将erl, erlc
安装在了/usr/local/bin
目录下了。解决方案请自行选择,此处本人选择建立软链语法: ln -s [source] [dest]
- 在运行rabbitmq时,会提示
Unable to load crypto library. Failed with error:
。这是因没有安装openSSL或者安装的openSSL版本不对(编译时缺少 -fPIC)。解决方案是,找到合适的openSSL。在此处,因为是线上服务器,很多服务以来openSSL,因此去更新openSSL对我来说显然是不现实的。因此,我选择了安装更高版本的erlang(Erlang/OTP 18)。检测成功的方法很简单。运行``erl`在进入命令交互界面后,执行crypto:start().
如果显示ok
则表示成功。
rabbitmq
接下来就是安装rabbitMQ了。此处没有选择安装rpm包的版本,而是选择了下载源码包进行编译安装(线上服务器,依赖资源固定不可更改,编译安装更自由些)。下载过程不赘述,请各位到www.rabbitmq.com官网中寻找。
step1:
解压开来之后,先运行./quickcheck
检测是否依赖环境是否满足。没有满足的,可以根据提示的错误信息google。
step2:
执行make进行编译
step3:
执行make intall进行安装