Tôi đang tạo một API RESTful cần truy cập cơ sở dữ liệu. Tôi đang sử dụng Restish, Oracle và SQLAlchemy. Tuy nhiên, tôi sẽ cố gắng đặt câu hỏi của mình một cách rộng rãi nhất có thể, mà không cần tính đến các API của Restish hoặc các API web khác.Đặt thời gian chờ kết nối cơ sở dữ liệu bằng Python
Tôi muốn có thể đặt thời gian chờ cho kết nối thực hiện truy vấn. Điều này đảm bảo rằng các truy vấn chạy dài bị bỏ qua và kết nối bị loại bỏ (hoặc tái chế). Thời gian chờ truy vấn này có thể là một giá trị toàn cầu, có nghĩa là, tôi không cần phải thay đổi nó cho mỗi truy vấn hoặc tạo kết nối.
Với đoạn mã sau:
import cx_Oracle
import sqlalchemy.pool as pool
conn_pool = pool.manage(cx_Oracle)
conn = conn_pool.connect("username/[email protected]")
conn.ping()
try:
cursor = conn.cursor()
cursor.execute("SELECT * FROM really_slow_query")
print cursor.fetchone()
finally:
cursor.close()
Làm thế nào tôi có thể sửa đổi các mã trên để thiết lập một thời gian chờ truy vấn trên nó? Thời gian chờ này cũng sẽ áp dụng cho việc tạo kết nối?
Điều này tương tự với phương thức setQueryTimeout (int giây) của java.sql.Statement trong Java.
Cảm ơn
Xin chào, tôi thấy rằng không có câu trả lời nào được chấp nhận, bạn có tìm thấy giải pháp nào khác cho vấn đề này không? – Ib33X
Không, tôi không thể thực hiện công việc này. Các giải pháp được đề xuất cho đến nay chỉ đơn giản là không hoạt động. – oneself
Tại sao 'conn.cancel()' không hoạt động? Điều gì sẽ xảy ra khi bạn thử giải pháp của Dmitry? – alldayremix