2017-06-01 114 views
0

我试图通过删除job停止运行apscheduler并完全关闭它!蟒蛇apscheduler不关闭

他们没有工作,我的功能expire_data仍然被触发

def process_bin(value): 
    print "Stored:",pastebin.value 
    print "Will expire in",pastebin_duration.value,"seconds!" 

    if pastebin_duration>=0: 
     scheduler = BlockingScheduler() 
     job=scheduler.add_job(expire_data, 'interval', seconds=5) 
     scheduler.start() 
     job.remove() 
     scheduler.shutdown() 

def expire_data(): 
    print "Delete data!" 

我怎么能阻止它?

+0

请标记*无论*蟒蛇2或3 – tambre

+0

对不起,固定,Python 2.7版! –

+0

您能否粘贴一个可以重现问题的完整示例? –

回答

2

问题:我试图从运行

您使用的是BlockingScheduler停止apscheduler,所以你不能。

APSchedulerBlockingScheduler

BlockingScheduler可能是最简单的调度。
它在前台运行,所以当你调用start(),时,调用永不返回


阅读Choosing the right scheduler

  • BlockingScheduler:使用时的调度是在过程
  • BackgroundScheduler运行的唯一的事:当你不使用任何框架的使用下面,并希望调度程序在您的应用程序的后台运行
  • AsyncIOScheduler:如果您的应用程序离子采用ASYNCIO模块
  • GeventScheduler:使用如果应用程序使用GEVENT
  • TornadoScheduler:如果你正在构建一个龙卷风应用
  • TwistedScheduler使用方法:如果你正在构建一个扭曲的应用
  • QtScheduler:使用如果你正在构建一个Qt应用程序