Hacktoberfest 2026: những issue maintainer đã đánh dấu cho tháng Mười, đang mở và phù hợp người mới. Xem issue Hacktoberfest

feat(sqlalchemy-spanner): wire timeout execution option through to DBAPI Connection.timeout

Đang mở Phù hợp với người mới
#16,467 0 bình luận 0 reaction 0 người được giao Xem trên GitHub

Maintainer thường phản hồi trong vòng 1 ngày

@sakthivelmanii đang làm issue này rồi.

Từ ngày 24/9/2026.

Đánh giá

Độ khó
2/5
Thời gian dự kiến
1-3 giờ
Mức phù hợp với người mới
75/100
Loại issue
Tính năng
Độ rõ ràng
Đặc tả rõ ràng
Mức độ hoạt động
Ít trao đổi
Công nghệ
python, sqlalchemy
Lĩnh vực
databases

Hướng nghiên cứu

Bắt đầu trong google/cloud/sqlalchemy_spanner/sqlalchemy_spanner.py tại SpannerExecutionContext.pre_exec() và reset_connection(), đồng thời so sánh cách xử lý request_priority hiện có. Xác nhận điều kiện tiên quyết là thuộc tính timeout của DBAPI Connection, sau đó kiểm tra rằng các tùy chọn thực thi được truyền đến connection và được đặt lại thành None khi các pooled connection được trả về.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Mô tả

priority: p2 type: bug

Summary

The SQLAlchemy Spanner dialect does not handle timeout in execution_options. Users cannot set a per-statement gRPC deadline through SQLAlchemy, causing all queries to use the gRPC default timeout of 3600 seconds.

Background

The Spanner SQLAlchemy dialect (SpannerExecutionContext.pre_exec()) reads execution options and forwards them to the DBAPI connection. Currently handled options: read_only, staleness, request_priority, transaction_tag, request_tag. The timeout option is not handled.

The dialect's reset_connection() method resets read_only, staleness, request_priority, transaction_tag, and request_tag on the DBAPI connection when returning connections to the pool. timeout is not reset.

Timeline

Date Commit Event
Apr 2020 Initial commit Dialect created — pre_exec() handles read_only and staleness
Oct 2021 d976fda (PR googleapis/python-spanner#269) request_priority added to pre_exec()
Jan 2023 5bd5076 (PR googleapis/python-spanner#494) transaction_tag and request_tag added to pre_exec()
Jun 2023 66c32a4 (PR googleapis/python-spanner#503) ignore_transaction_warnings added to pre_exec()
None N/A timeout was never added to pre_exec() or reset_connection()

Each new execution option was added incrementally. timeout was not included in any of these additions.

Proposed Change

Add timeout handling to SpannerExecutionContext.pre_exec() following the existing pattern for request_priority:

  1. Read self.execution_options.get("timeout")
  2. Set self._dbapi_connection.connection.timeout = timeout
  3. Reset timeout to None in reset_connection()
Files changed
  1. google/cloud/sqlalchemy_spanner/sqlalchemy_spanner.py — Add timeout handling to pre_exec() and reset_connection()
Usage
from sqlalchemy import create_engine

engine = create_engine("spanner:///...")

# Per-connection timeout
with engine.connect().execution_options(timeout=60) as conn:
    conn.execute(text("SELECT * FROM my_table"))

# Engine-level default timeout
engine = create_engine("spanner:///...", execution_options={"timeout": 60})

Prerequisites

This change depends on the DBAPI Connection supporting a timeout property: googleapis/google-cloud-python#16492

Related

  • DBAPI issue: googleapis/google-cloud-python#16492
  • _SnapshotBase.execute_sql() has accepted timeout= since November 2018 (PR #6536 in the original monorepo)
  • This code was previously in googleapis/python-spanner-sqlalchemy (now archived) and moved to googleapis/google-cloud-python/packages/sqlalchemy-spanner
Ngôn ngữ chính
Python
Star
5.4k
Fork
1.8k
Merge trung bình
2 ngày 11 giờ
Pull request đã merge (30 ngày)
142

Chuẩn bị môi trường

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Issue khác của googleapis/google-cloud-python

Tất cả issue của googleapis/google-cloud-python

Issue tương tự

Thêm issue về Python

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.