1
shiny 2013-12-11 17:21:01 +08:00
用支持延时的队列即可?比如 beanstalkd ?
|
2
ipconfiger 2013-12-11 17:32:48 +08:00 1
tornado IOLoop
|
3
cute 2013-12-11 18:14:11 +08:00
python celery beat
|
5
yueyoum OP @ipconfiger
能具体点吗? 是不是这种思路 我用erlang 来说 timer 每收到一个请求 就 spawn 一个 process, sleep 住, 等时间到了 再做对应的动作 但要自己实现…… 有点懒 看是否有现成的 |
6
yueyoum OP @cute
celery 我试了下, 可能是我不会用 在默认 prefork workers 模式 是不能满足要求的 当添加一个定时任务的时候,一个worker就sleep住, 这样就需要大量的worker process 这样显然是不可取的。 我还没研究 greenlet, eventloop 类型的worker |
7
ipconfiger 2013-12-11 20:28:44 +08:00
@yueyoum 是这样子的,tornado的IOLoop本质上就是个大死循环,所以,IOLoop.add_timeout 能够解决你的问题
|
8
bengol 2013-12-11 21:05:32 +08:00
原来你们在讨论语言的基础设施
|
10
cute 2013-12-11 21:22:28 +08:00
@yueyoum
celery的beat是配合worker的,时间到了beat发送消息给消息服务器,然后worker获取任务执行执行。 |
11
pythoner 2013-12-11 21:29:12 +08:00
celery满足你的需要.
your_task.apply_async(eta=now + timedelta(seconds=5)) |
12
mumhero 2013-12-11 22:32:31 +08:00
http://pythonhosted.org/APScheduler/
看看这个性能满足你的要求不 |