Flask-apscheduler问题

按照书上介绍,使用apscheduler做定时任务,本地调试的时候,由于是单线程,所以到点,指定的任务会正常运行。但是部署上Nginx之后,由于gunicorn是四个线程,会发现定时任务会执行<=4 但是 >1次

有没有什么办法,可以让任务只能执行一次么?

网上找了些方法,没有尝试成功。

不知道有没有人遇到过这个问题?如何解决的?

已经用网上说得Linux的文件锁库解决了一下,不过还是想请各位大佬看看,是否有更好的办法:

由于是linux下的标准库,所以判断了一下是什么系统:

win = sys.platform.startswith(‘win’)

if not win:
import fcntl

f = open(‘task_lock.txt’, ‘w’)
if win or (not win and f.writable()):
if not win:
fcntl.flock(f.fileno(), fcntl.LOCK_EX) # 文件加锁

处理过程…

处理完毕,解锁
if not win:
fcntl.flock(f.fileno(), fcntl.LOCK_UN)

apscheduler的这个问题目前应该没有较好的解决方案。
如果你的项目部署在linux系统,推荐使用flask cli + cron job实现定时任务。