V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
zhangyuting
V2EX  ›  问与答

python 异步周期任务

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

    如果需要实用可能需要一些改进:
    1.一个可以自适应的线程池大小,可以仿照的cherrypy或paste的wsgiserver。
    2.解构业务逻辑,重新定义序列化和沟通协议使用json或者msgpack,(thrift, gooogle probuf个人不推荐)
    zhangyuting
        7
    zhangyuting  
    OP
       2014-07-22 16:09:32 +08:00
    @stevenyou 这个可以不阻塞的调用周期任务吗?
    stevenyou
        8
    stevenyou  
       2014-07-23 10:03:03 +08:00   ❤️ 1
    @zhangyuting 可以,异步的
    zhangyuting
        9
    zhangyuting  
    OP
       2014-07-23 12:56:32 +08:00
    @ericFork 请教-rq 怎么用
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   945 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 20ms · UTC 20:57 · PVG 04:57 · LAX 12:57 · JFK 15:57
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.