我正在嘗試運行一個調度程式,我的索引函式將在每 1 分鐘內運行。我正在使用燒瓶和 postgresql。但是在運行燒瓶運行后
app.run()沒有執行。這是代碼:
def index():
connection = db.engine.connect(close_with_result=True)
print('first')
sql = text("""delete from user""")
print('done')
connection.execute(sql)
connection = db.engine.connect(close_with_result=True)
sql = text("""select * from user where name='a' or name='b'""")
connection.execute(sql)
connection.close()
schedule.every(1).minutes.do(index)
while True:
schedule.run_pending()
time.sleep(1)
# scheduler wait for 1 second
if __name__ == "__main__":
app.run()
但似乎這段代碼無法訪問:
if __name__ == "__main__":
app.run()
因為這部分代碼:
while True:
schedule.run_pending()
time.sleep(1)
# scheduler wait for 1 second
為什么它不起作用?
uj5u.com熱心網友回復:
我認為您不能在使用__main__函式的同一范圍內運行阻塞回圈。
我會說您要么創建一個執行緒以在后臺使用阻塞回圈運行調度程式,要么您可以使用APScheduler。
from apscheduler.schedulers.background import BackgroundScheduler
def index():
connection = db.engine.connect(close_with_result=True)
print('first')
sql = text("""delete from user""")
print('done')
connection.execute(sql)
connection = db.engine.connect(close_with_result=True)
sql = text("""select * from user where name='a' or name='b'""")
connection.execute(sql)
connection.close()
scheduler = BackgroundScheduler()
scheduler.add_job(func=index, trigger="interval", seconds=60)
scheduler.start()
if __name__ == "__main__":
app.run()
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/410424.html
標籤:
上一篇:以下SQL創建表查詢有什么問題?
