本文介绍了python apscheduler没有关闭的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我试图通过删除 job 并完全关闭它来阻止 apscheduler 继续运行!

它们都不起作用,我的函数 expire_data 仍然被触发

def process_bin(value):打印存储:",pastebin.value打印将过期",pastebin_duration.value,秒!"如果 pastebin_duration>=0:调度程序 = BlockingScheduler()job=scheduler.add_job(expire_data, 'interval', seconds=5)调度程序.start()作业.remove()scheduler.shutdown()def expire_data():打印删除数据!"

我怎样才能阻止它?

解决方案

您正在使用 BlockingScheduler,因此您不能.

APScheduler BlockingScheduler

BlockingScheduler 是最简单的调度器.
它在前台运行,因此当您调用 start() 时,调用永远不会返回.

阅读选择合适的调度器

  • BlockingScheduler:当调度程序是你的进程中唯一运行的东西时使用
  • BackgroundScheduler:当您不使用以下任何框架,并希望调度程序在您的应用程序的后台运行时使用
  • AsyncIOScheduler:在您的应用程序使用 asyncio 模块时使用
  • GeventScheduler:在您的应用程序使用 gevent 时使用
  • TornadoScheduler:在您构建 Tornado 应用程序时使用
  • TwistedScheduler:在构建 Twisted 应用程序时使用
  • QtScheduler:在您构建 Qt 应用程序时使用

I'm trying to stop the apscheduler from running on by removing the job and shutting it down completely!

None of them is working, my function expire_data still gets triggered

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!"

How can I stop it?

解决方案

You are using a BlockingScheduler, therefore you can't.


这篇关于python apscheduler没有关闭的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

05-19 22:49