celery(芹菜)是一个异步任务队列/基于分布式消息传递的作业队列。它侧重于实时操作,但对调度支持也很好。
celery用于生产系统每天处理数以百万计的任务。
celery是用Python编写的,但该协议可以在任何语言实现。它也可以与其他语言通过webhooks实现。
建议的消息代理RabbitMQ的,但提供有限支持Redis, Beanstalk, MongoDB, CouchDB, ,和数据库(使用SQLAlchemy的或Django的 ORM) 。
celery是易于集成Django, Pylons and Flask,使用 django-celery, celery-pylons and Flask-Celery 附加包即可。
例子:
两个数相加的例子:
from celery.task import task@taskdef add(x, y): return x + y
你可以后台运行,或者等待它完成:
>>>result=add.delay(8,8) >>>result.wait()# wait for and return the result16方法1:
import sched, time
import os
s = sched.scheduler(time.time, time.sleep)
#scheduler的两个参数用法复杂,可以不做任何更改
def playmusic(x):
os.system(x)
def jobtodo():
tmlist = [2011,8,11,22,15,0,0,0,0]
x1=time.mktime(tmlist)
x2=time.time()
y=x1-x2
#计算任务到现在的时间长度
s.enter(y, 1, playmusic, ('mplayer /home/c.mp3',))
#四个参数分别为:间隔事件、优先级(用于同时间到达的两个事件同时执行时定序)、被调用触发的函数,给他
#的参数(注意:一定要以tuple给如,如果只有一个参数就(xx,))
s.run()
print time.time()
jobtodo()
方法2
import os
import time
from threading import Timer
def playmusic(x):
os.system(x)
def jobtodo():
tmlist = [2011,8,11,22,40,0,0,0,0]
x1=time.mktime(tmlist)
x2=time.time()
y=x1-x2
Timer(y, playmusic, ('mplayer /home/b.mp3',)).start()
jobtodo()
废话不多说,安装需要的东西都必须有 python jdk
然后 erlang
下载安装包 然后
RabbitMQ安装
1. Erlang 安装
wget http://www.erlang.org/download/otp_src_R14B.tar.gz
tar -zxf otp_src_R14B01.tar.gz
cd otp_src_R14B01
./configure
make
sudo make install
注意在make install 时使用root权限
2.RabbitMQ安装
wget http://www.rabbitmq.com/releases/rabbitmq-server/v2.3.1/rabbitmq-server-2.3.1.tar.gz
tar -zxf rabbitmq-server-2.3.1.tar.gz
cd rabbitmq-server-2.3.1
sudu make TARGET_DIR=/u/rabbitmq SBIN_DIR=/u/rabbitmq/sbin MAN_DIR=/u/rabbitmq/man install
注意在make install 时使用root权限 ,TARGET_DIR等三个路径对用户可见
如果 机器上python 版本为2.6以下版本 会提示You don't appear to have simplejson.py installed 安装SimpleJson
3.SimpleJson安装(python 2.6以下安装)
http://pypi.python.org/packages/source/s/simplejson/simplejson-2.1.3.tar.gz#md5=58d9b1d8fa17ea4ce205cea088607e02
wget http://pypi.python.org/packages/source/s/simplejson/simplejson-2.1.3.tar.gz#md5=58d9b1d8fa17ea4ce205cea088607e02
tar -zxf simplejson-2.1.3.tar.gz
cd simplejson-2.1.3
CP simplejson 到 python安装目录下 如: /usr/local/lib/python2.5
4. xmlto (rabbitmq 编译安装时需要使用)
wget https://fedorahosted.org/releases/x/m/xmlto/xmlto-0.0.23.tar.gz
tar -zxf xmlto-0.0.23.tar.gz
cd xmlto-0.0.23
./configure
make
sudo make install
5. 配置 rabbitmq
cd rabbitmq/sbin
rabbitmq-server文件中有三个参数修改为本用户可见目录
#Eralng控制文件
CONFIG_FILE=
#日志文件
LOG_BASE=
#数据库文件
MNESIA_BASE=
6.启动RabbitMQ
cd rabbitmq/sbin
./rabbitmq-server start
或设置后台运行 nohup ./rabbitmq-server start > nohup.out&
成功启动后会有如下提示:
Activating RabbitMQ plugins ...
0 plugins activated:
+---+ +---+
| | | |
| | | |
| | | |
| +---+ +-------+
| |
| RabbitMQ +---+ |
| | | |
| v2.3.1 +---+ |
| |
+-------------------+
AMQP 0-9-1 / 0-9 / 0-8
Copyright (C) 2007-2011 VMware, Inc.
Licensed under the MPL. See http://www.rabbitmq.com/
broker running
浙公网安备 33010602011771号