首页 > 解决方案 > Apscheduler get_jobs() 返回空列表

问题描述

一直在为此苦苦挣扎。我在带有 UWSGI 的 AWS 服务器上使用 Flask 设置了我的 apscheduler。一切似乎都很好,除了我无法从 scheduler.get_jobs() 获取计划作业列表。还尝试了 scheduler.print_jobs() 结果为“无”。这是代码:

from flask import Flask
app = Flask(__name__)

from apscheduler.schedulers.background import BackgroundScheduler
scheduler = BackgroundScheduler(daemon=True)
scheduler.start()

我有一个 app.route 来启动定期任务,然后有另一个路线来显示预定路线。我的定期任务开始正常,并在正确的时间间隔内完成它需要做的事情(更新我的谷歌电子表格文件)。

#schedules the job but returns "None"
@app.route("/runscheduler")
def runscheduler():
    with app.app_context():
        job = scheduler.add_job(get_balance, 'interval', seconds=120, id="sfvs")
        return str(scheduler.print_jobs())

我试图创建一个返回 scheduler.get_jobs() 但返回一个空列表的路由

@app.route("/schedule")
def schedule():
    return str(scheduler.get_jobs())

我尝试的最后一件事是在我的家庭路线中通过 id 获取工作信息,这实际上返回了所有正确的信息:

@app.route("/")
def hello():
    return str(scheduler.get_job("sfvs"))

返回:get_balance(触发器:interval[0:02:00],下次运行时间:2021-02-21 03:39:17 UTC)

所以我的问题是为什么我的代码不能显示计划作业的列表(既不是 scheduler.get_jobs() 也不是 scheduler.print_jobs()),但我仍然可以通过 id 访问它来获取我的作业的所有详细信息?最重要的是,这项工作仍然可以在正确的时间间隔内完美地执行。

标签: pythonflaskuwsgiapscheduler

解决方案


推荐阅读