使用 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 (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...