烧瓶加时间表 [英] Flask plus Schedule
问题描述
我想将计划与我的Flask应用集成,因为我需要执行一些常规任务.我在此处找到了它,他使用线程在后台运行它.但是,当我在我的软件上尝试使用它时,无法使用Ctrl-C退出应用程序,而是使用Windows.我很快将其部署在Heroku上,怎么了?
Hi I want to integrate schedule with my Flask app since I would need to do some routinely tasks. I found it here that he used threading to run it on the background. However when I tried it on mine, I cannot exit my app using Ctrl-C, I am using Windows. I will soon deploy it on Heroku, what's wrong?
还有没有更好,更人性化"的时间表来为Flask做一些例行任务?谢谢.
Also is there any better and 'human-friendly' like schedule to do some routine task for Flask? Thanks.
这是我的代码:
from flask import Flask
from datetime import datetime
import gspread
from oauth2client.service_account import ServiceAccountCredentials
import mysql.connector
from mysql.connector import Error
import schedule
import time
from threading import Thread
app = Flask(__name__)
def job():
print("I'm working...")
def run_schedule():
while True:
schedule.run_pending()
time.sleep(1)
@app.route('/')
def homepage():
return '<h1>Hello World!</h1>'
if __name__ == '__main__':
schedule.every(5).seconds.do(job)
sched_thread = Thread(target=run_schedule)
sched_thread.start()
app.run(debug=True, use_reloader=False)
推荐答案
尝试 APScheduler .它支持后台调度程序.
Try APScheduler. It supports background scheduler.
这里是示例代码,我将烧瓶与apscheduler一起使用.
Here's sample code I used flask with apscheduler.
from flask import Flask
from apscheduler.schedulers.background import BackgroundScheduler
from apscheduler.executors.pool import ThreadPoolExecutor, ProcessPoolExecutor
app = Flask(__name__)
executors = {
'default': ThreadPoolExecutor(16),
'processpool': ProcessPoolExecutor(4)
}
sched = BackgroundScheduler(timezone='Asia/Seoul', executors=executors)
def job():
print('hi')
sched.add_job(job, 'interval', seconds=5)
if __name__ == '__main__':
sched.start()
app.run(debug=True, use_reloader=False)
这篇关于烧瓶加时间表的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!