微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用 Gunicorn 在 apscheduler 中暂停、add_job、remove_job

如何解决使用 Gunicorn 在 apscheduler 中暂停、add_job、remove_job

在以下代码段中,我尝试从暂停和 remove_job add_job 提供的 startpauseBackgroundScheduler

apscheduler.schedulers

为了运行这个,我使用:

from flask import Flask
from apscheduler.schedulers.background import BackgroundScheduler
from apscheduler.jobstores.sqlalchemy import sqlAlchemyJobStore
      
def this_job():
    print("the job")
  

app = Flask(__name__)
scheduler = BackgroundScheduler(
    daemon=True,jobstores={"default": sqlAlchemyJobStore(url="sqlite:///jobs.sqlite")},)
scheduler.start()


@app.route("/")
def index():
    return "Congratulations,it's a web app!"


@app.route("/remove_schedule")
def remove_job():
    scheduler.remove_job(job_id="this_job")
    return "job removed"


@app.route("/pause_scheduler")
def pause_scheduler():
    scheduler.pause()
    return "paused scheduler"


@app.route("/resume_scheduler")
def resume_scheduler():
    scheduler.start(paused=True)
    return "resume scheduler"


@app.route("/schedule")
def start_job():
    scheduler.add_job(
        "this_job","cron",id=this_job,year="*",month="*",day="*",minute="*",max_instances=2,replace_existing=True,misfire_grace_time=240,)
    return "job started"


if __name__ == "__main__":
    app.run(host="127.0.0.1",port=8080,debug=True)

为已创建的作业调用 remove_job 时,该作业已成功删除。但是当使用 gunicorn run:app -w 4 -t 10 --preload 再次创建作业时,作业似乎被添加但从未被调度程序执行。 另外,按照这个程序,程序在启动时挂起,我必须删除作业存储才能重新启动。

另一方面,在任何时候暂停调度程序,调度程序都不会暂停。

我是否遗漏了实施中的某些内容?或 /schedule ?还是一般的调度程序?

谢谢

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。