2010-08-18 68 views
5

Tôi mới dùng SQLAlchemy, nhưng tôi đang cố gắng sử dụng nó để tạo và điền vào cơ sở dữ liệu cho một dự án cá nhân. Tôi đã đặt pool_timeout thành 43200 (mười hai giờ), nhưng tôi vẫn nhận được thời gian chờ của ổ cắm.Tránh hết thời gian chờ trong SQLAlchemy

engine = sqlalchemy.create_engine(
      'postgresql+pg8000://gdwatson:[email protected]/dbname', 
      pool_timeout=43200) 
db.tables.meta.drop_all(bind=engine) 
db.tables.meta.create_all(bind=engine) 

conn = engine.connect() 
dataset = build_dataset() 
conn.execute(db.tables.mytable.insert(), 
      dataset) 
conn.close() 

tôi kết thúc nhận socket.timeout: timed out sau một thỏa thuận tốt về thời gian xử lý, nhưng có lẽ dưới một giờ và chắc chắn dưới hai. Nó thực sự là ba cấp độ sâu - trong khi xử lý các ngoại lệ thời gian chờ khác xảy ra, và sau đó khi xử lý mà một trong những khác xảy ra. (Có lẽ đây là thư viện thử lại?) Ngoại lệ xảy ra trong conn.execute và tôi không biết cách ngăn chặn nó.

Tìm kiếm không bật lên bất kỳ thông tin nào. Tôi đang sử dụng Python 3.1 và SQLAlchemy 0.6.1, cho những gì nó có giá trị.

+0

Tôi đã kết thúc chia tập dữ liệu thành các khối 1000 lần nhập và chèn từng đoạn một. Điều đó làm việc xung quanh vấn đề, ngay cả khi nó là một chút xấu xí hơn. –

Trả lời

2

Tôi không biết đây có phải là phương pháp được đề xuất hay không, nhưng bạn có thể gửi câu hỏi SELECT 1 định kỳ và đảm bảo kết nối không hoạt động.
Bạn cũng có thể xem this để biết một số hướng dẫn

Các vấn đề liên quan