背景
最近写的一个数据监控采集服务,需要使用定时任务。而又不想把定时任务交给crontab处理(需要分散维护)。而且,暂时不想使用gevent, twisted这么重的包包含进来。那么剩下的选择显而易见的就是celery了。
celery是python阵营中的分布式消息队里,也可以用来做定时任务处理。强在分布式,而且对于broker不挑食。可以使用rabbitmq, redis 甚至数据库等等。
而目前我的环境还是不熟rabbitmq比较方便。(恩,因为我是erlang爱好者。。。)
安装celery
因为选择了 rabbitmq 作为broker,那么首先要解决的就是erlang环境。
erlang
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
step1:
解压开来之后,先运行./quickcheck
检测是否依赖环境是否满足。没有满足的,可以根据提示的错误信息google。
step2:
执行make进行编译
step3:
执行make intall进行安装