在使用 orm 框架(例如 django orm、peewee 或 sqlalchemy)、驅動庫(例如 pymysql)、web 框架(例如 fastapi、flask 或 django),以及服務器(例如 uvicorn 或 gunicorn)時,如何實現 sql 查詢超時終止?
例如,使用 uvicorn、fastapi、peewee 和 pymysql 時,某些 sql 查詢可能需要很長時間才能完成。但是,這樣做存在潛在的安全風險。我們需要設置一個查詢時間上限,以防止單個 sql 查詢的運行時間超過預期值。
以下是實現此目的的優雅解決方案:
立即學習“Python免費學習筆記(深入)”;
pymysql
pymysql 提供了以下參數來設置超時:
- “connection_timeout”: 指定與數據庫建立連接的超時時間(以秒為單位)。
- “read_timeout”: 指定從數據庫讀取數據時使用的超時時間。
- “write_timeout”: 指定向數據庫寫入數據時使用的超時時間。
例如,以下代碼將設置所有超時時間為 60 秒:
import pymysql connection = pymysql.connect( connection_timeout=60, read_timeout=60, write_timeout=60, )
? 版權聲明
文章版權歸作者所有,未經允許請勿轉載。
THE END