python 异步周期任务

2014-07-22 12:27:05 +08:00
 zhangyuting
试过了python自带的sched和高级的APScheduler,但是任务都是阻塞的,如果每次调用的执行时间较长,超过调用周期间隔时间,就会阻塞,等待当前任务完成才进行下一次调用,我希望是异步调用,每次调用不会阻塞下一次调用,求各位推荐符合我需求的方法,多谢
5892 次点击
所在节点    问与答
10 条回复
lianghui
2014-07-22 12:46:08 +08:00
多线程,主线程watch分派任务,线程池做任务
clino
2014-07-22 12:53:30 +08:00
zhangyuting
2014-07-22 13:05:35 +08:00
我觉得能满足我需求的应该是使用多线程的,但是不知道有没有已经实现了的库
stevenyou
2014-07-22 13:08:02 +08:00
celery, 不知道是不是大材小用了
ericFork
2014-07-22 13:49:22 +08:00
简单的直接用 python-rq
lianghui
2014-07-22 13:53:58 +08:00
@zhangyuting
https://github.com/coleifer/huey
这里有个简单的实现,缺点很多:
1.定时任务是单线程的
2, taskqueue 线程池是大小写死的,不能自适应线程池大小。
3, 使用pickle蛋疼的不能解藕生产者和消费者的代码

如果需要实用可能需要一些改进:
1.一个可以自适应的线程池大小,可以仿照的cherrypy或paste的wsgiserver。
2.解构业务逻辑,重新定义序列化和沟通协议使用json或者msgpack,(thrift, gooogle probuf个人不推荐)
zhangyuting
2014-07-22 16:09:32 +08:00
@stevenyou 这个可以不阻塞的调用周期任务吗?
stevenyou
2014-07-23 10:03:03 +08:00
@zhangyuting 可以,异步的
zhangyuting
2014-07-23 12:56:32 +08:00
@ericFork 请教-rq 怎么用
ericFork
2014-07-23 13:29:40 +08:00

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/123895

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX