influxdata / influxdata/influxdb-client-python

WriteApi does not respect Ctrl+C / KeyboardInterrupt / SIGTERM

オープン
#688 コメント 0 件 リアクション 0 件 担当者 0 名 GitHub で見る
bug
主要言語
Python
スター
793
フォーク
186
平均マージ
3時間 2分
マージ済み PR(30日)
1

説明

### Specifications

* Client Version: 1.48.0
* InfluxDB Version: 2.4.0
* Platform: Ubuntu 24.04

### Code sample to reproduce problem

1. Make sure there is no server running at the address below.
2. Run the following program
```python
import urllib3
from influxdb_client.client.influxdb_client import InfluxDBClient
from influxdb_client.client.write.point import Point

_RETRIES = urllib3.util.Retry(total=6, backoff_factor=0.8)
p = Point("dsjfsfd")
with InfluxDBClient("http://127.0.0.1:8086", org="fake", retries=_RETRIES) as client:
with client.write_api() as api:
api.write("mybucket", client.org, p)

```
3. Wait a second or two to make sure at least one attempt has been made.
4. Press **Ctrl+C** (or send a `SIGTERM` through some other mechanism, eg `kill` utility on linux)

### Expected behavior

`api.__exit__` should raise a `KeyboardInterrupt` exception immediately.

### Actual behavior

Program is stuck running for several minutes inside `api.__exit__`. Until program is force killed using `SIGKILL` or all retries have been exhausted.

### Additional info

I've also experimented with `write_options=WriteOptions(max_close_wait=1000)` but it does not help and it has the risk to affect the normal flow when user is not pressing Ctrl+C

コントリビューションガイド

このリポジトリのコントリビューションガイドは索引されていません

調査の方向性

Start with the client.write_api() entry point and the InfluxDBClient usage shown in influxdb_client/client/influxdb_client.py. Reproduce the no-server case, then trace api.__exit__ during Ctrl+C or SIGTERM; done means shutdown raises KeyboardInterrupt promptly instead of waiting for retries to finish.

索引モデルが issue の本文から書いたものです。

評価

技術スタック
python
領域
api
issue の種類
バグ
難易度
4/5
見積もり時間
3〜5日
活発さ
停滞
明瞭さ
明確に書かれている
初心者へのやさしさ
42/100

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。