influxdata / influxdata/influxdb-client-python
WriteApi does not respect Ctrl+C / KeyboardInterrupt / SIGTERM
- Dominant language
- Python
- Stars
- 793
- Forks
- 186
- Avg merge
- 3h 2m
- Merged PRs (30d)
- 1
Description
### 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
Contributor guide
No contributing guide indexed for this repository
Research direction
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.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- python
- Domain
- api
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Clearly specified
- Newbie friendliness
- 42/100