在Python中,有若干解決方案可以實現後台任務,例如Celery或Redis Queue,都是實現任務佇列系統的好方法。但使用這二者都比較麻煩。設想這樣一個場景,我們用Flask建立一個API,實現從一個終端呼叫後台任務,並用另一個終端停止後台任務。
使用Flask建立了一個簡單的API,有兩個主要的方法,一個用於啟動後台任務,另一個用於停止。
為了管理任務的生命週期,我們使用Event Objects
,這是一個簡單的執行緒間通訊機制。
如下所示是所需導入的函式庫、執行緒事件宣告和後台任務方法:
from time import sleep from flask import Flask from flask_cors import CORS import threading thread_event = threading.Event() def backgroundTask(): while thread_event.is_set(): print('Background task running!') sleep(5)
這裡的關鍵是is_set()
方法,它將傳回內部執行緒事件標誌的值:true
或false
。
首先,使用set()
方法把標誌設為true
,它將啟動一個線程,並連續運行backgroundTask
方法。
@app.route("/start", methods=["POST"]) def startBackgroundTask(): try: thread_event.set() thread = threading.Thread(target=backgroundTask) thread.start() return "Background task started!" except Exception as error: return str(error)
如果要停止任務,呼叫clear()
方法將標誌設為false
,以停止正在執行的執行緒。
@app.route("/stop", methods=["POST"]) def stopBackgroundTask(): try: thread_event.clear() return "Background task stopped!" except Exception as error: return str(error)
以上是使用Python Flask建立高效能API應用程式並實作後台任務的方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!