gpt4 book ai didi

python - 使 APScheduler 在 Web 应用程序中在后台运行

转载 作者:太空狗 更新时间:2023-10-30 03:05:38 24 4
gpt4 key购买 nike

我有一个 Flask 网络应用程序,它显示来自 rss 提要的信息。我想定期处理 rss 提要,例如每 30 分钟一次。提取一些信息并将其存储在 sqlite 数据库中。

但我不知道如何将函数安排到特定的时间间隔。

我用过APScheduler,我的代码如下:

def main():
# Start the scheduler
filename = os.path.abspath(os.path.join(os.path.dirname( __file__ ), '..', 'tmp')) + '\\' + 'spider.log'
logging.basicConfig(filename=filename, level=logging.DEBUG,format='%(levelname)s[%(asctime)s]: %(message)s')
sched = Scheduler()
sched.start()
sched.add_interval_job(run_job, minutes=30)
time.sleep(9999)

我有一个run.py函数

from app import app, spider

spider.main()
app.run(debug=True)

app.run(debug=True) 启动 Flask 网络应用程序。问题是代码永远不会到达 app.run

那么是否可以生成另一个进程来处理 spider.main() 调用,并在后台运行该进程?或者我应该使用其他方法?

注意:我知道我可以使用 Flask-Celery,但对于这个小应用程序来说,这似乎太重量级了......

最佳答案

您不需要 time.sleep - 当您运行 spider.main 时,它会启动您的调度程序,然后让进程休眠 9999 秒 - 之后它将运行下一行。所以 app.run 将在 spider.main 启动后约 2.78 小时启动。

所以 spider 应该是这样的:

def main():
# Start the scheduler
filename = os.path.abspath(os.path.join(os.path.dirname( __file__ ), '..', 'tmp')) + '\\' + 'spider.log'
logging.basicConfig(filename=filename, level=logging.DEBUG,format='%(levelname)s[%(asctime)s]: %(message)s')
sched = Scheduler()
sched.start()
sched.add_interval_job(run_job, minutes=30)

关于python - 使 APScheduler 在 Web 应用程序中在后台运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11399879/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com