2017-06-01 102 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應用程序