python - Flask 中的 apscheduler 执行两次

标签 python flask apscheduler

我在 flask 应用程序中使用 apscheduler 时遇到问题。

在我的 view.py 文件中我是这样写的

import time
from apscheduler.scheduler import Scheduler

def test_scheduler():
     print "TEST"
     print time.time()


sched = Scheduler()
sched.add_interval_job(test_scheduler, seconds=5)
sched.start()

然后这个方法test_scheduler()每五秒执行两次

测试 1360844314.01 测试 1360844314.2

最佳答案

在 Debug模式下,Flask 的重新加载器将加载 Flask 应用程序两次 (How to stop Flask from initialising twice in Debug Mode?)。我不确定为什么会这样,但它会导致 apscheduler 的作业被安排两次。在 sched.start() 确认这一点之前,快速 print "loaded scheduler"

如链接答案中所述,有几种方法可以解决此问题。我发现效果最好的方法就是像这样禁用重新加载器:

app.run(use_reloader=False)

这意味着我必须在开发应用程序时手动重新加载它,但要让 apscheduler 正常工作需要付出很小的代价。

关于python - Flask 中的 apscheduler 执行两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14874782/

相关文章:

python - 用 Python 捕获 ConnectionResetError

python - SQLalchemy 问题从 MSSQL 列恢复二进制数据

python - 请求前 flask - 为特定路线添加异常(exception)

python - 如何使用 MongoKit 对远程数据库主机进行身份验证?

python - APScheduler 作业 ID : why are jobs allowed to share IDs?

python - 均方位移作为 Python 中的时间函数

python - 如果我启动一个 flask 应用程序,它会显示两个进程正在运行

python - 如何监控传出的 HTTPS

python - 从 Flask 请求中读取全局 collections.deque 安全吗?

python - 如何使用 APScheduler 安排间隔作业?