0

我对 Python 和 Bottle(以及 apscheduler)完全陌生,所以我会很感激一些关于实现计划作业的简单说明。

我编写了一些 Python 代码,可以检查我们网站上显示的状态和数据。我还编写了一些将状态通过电子邮件发送给我们的代码。

现在,我想添加定期调用此代码的功能(例如每 15 分钟一次),为此,apscheduler 似乎是一个合适的、轻量级的、独立的解决方案。

我想知道的是:

  • 我可以在 Bottle 网站启动时启动 BackgroundScheduler 吗?(“启动”代码在哪里?)
  • 我可以将我的 BackgroundScheduler 实例设为全局吗?原因是我想从网站上的其他地方访问它并添加/删除/暂停作业

我看到其他人在这里有类似的想法是可以在bottle web框架中运行任务调度程序,但是对于像我这样的菜鸟来说,细节和答案的细节太少了。

我知道我可能会使用 sleep() 来解决类似的问题,但我首先想先探索 apscheduler 选项。

我也看过 Celery,但我认为这对于我正在构建的这个小型、单一用途的 Web 应用程序来说太过分了。

我应该补充一点,我正在使用 Visual Studio 2013 中可用的 Bottle 项目,该项目已包含某些配置和文件。

4

2 回答 2

1

您可以使用threading.Timer

from threading import Timer

def my_task():
    # do stuff ...
    Timer(15*60, my_task).start()     # schedule for every 15 minutes

# start your scheduler
my_task()
于 2015-05-06T13:23:20.817 回答
0

@Alexander:我也这样做了。它与Botte WSGIRefServer()一起工作,在这里你可以让线程随心所欲。在具有mod_wsgi的 Apache 上,您的线程应该只运行这么长时间 - 然后它们就被杀死了。因此,Bottle中的调度程序对我不起作用。

就我个人而言,我正在zmq (pyzmq) 中编写一个小调度服务器,它接收调度任务并使用调度包来运行它们。对我来说效果很好。

于 2017-02-01T01:48:24.010 回答