Workers share the same Source instances as pollers and use them for fetch(). PollerManager.stop() was closing httpx clients before the worker pool drained, so in-flight fetches during the shutdown grace hit a closed client. - Move source closing out of stop() into a separate close_sources() - Call close_sources() after _stop_pool() in both serve() and run_batch() - Promote aclose() to the Source protocol with no-op defaults for FS and S3, removing the hasattr duck-typing |
||
|---|---|---|
| .. | ||
| api | ||
| pollers | ||
| queue | ||
| sources | ||
| workers | ||
| __init__.py | ||
| app.py | ||
| cli.py | ||
| exceptions.py | ||