influxdata / influxdata/influxdb-client-python
WriteApi does not respect Ctrl+C / KeyboardInterrupt / SIGTERM
Dieses Issue hat noch niemand übernommen.
- Vorherrschende Sprache
- Python
- Sterne
- 793
- Forks
- 186
- Ø Merge
- 3 Std. 2 Min.
- Gemergte PRs (30 T.)
- 1
Beschreibung
### 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
Beitragsleitfaden
Für dieses Repository ist kein Beitragsleitfaden indexiert
Erste Schritte
- Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
- Forke das Repository und arbeite in einem Branch.
- Öffne einen Pull Request, der die Issue-Nummer nennt.
Rechercherichtung
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.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- python
- Bereich
- api
- Issue-Typ
- Bug
- Schwierigkeit
- 4/5
- Geschätzter Aufwand
- 3-5 Tage
- Aktivitätsstatus
- Veraltet
- Klarheit
- Klar beschrieben
- Anfängerfreundlichkeit
- 42/100