fix: Configure aiodocker client with long timeout for log stream
Co-authored-by: aider (gemini/gemini-2.5-pro) <aider@aider.chat>
This commit is contained in:
15
main.py
15
main.py
@@ -8,7 +8,6 @@ import asyncio
|
||||
import re
|
||||
from datetime import datetime, timedelta, timezone
|
||||
import aiodocker
|
||||
from aiodocker.connector import DockerConnector
|
||||
import aiohttp
|
||||
import random
|
||||
import string
|
||||
@@ -154,15 +153,10 @@ async def main():
|
||||
Monitors Navidrome container logs for rapid star/unstar events.
|
||||
"""
|
||||
docker = None
|
||||
session = None
|
||||
try:
|
||||
# We need a custom session with no timeout for the long-polling log stream.
|
||||
# We also need to use aiodocker's connector to handle Unix sockets correctly.
|
||||
connector = DockerConnector()
|
||||
timeout = aiohttp.ClientTimeout(total=None, sock_read=None)
|
||||
session = connector.aiohttp_session(timeout=timeout)
|
||||
docker = aiodocker.Docker(session=session)
|
||||
|
||||
# Set a long client timeout to prevent log stream from timing out during
|
||||
# periods of inactivity. One day in seconds.
|
||||
docker = aiodocker.Docker(client_timeout=86400)
|
||||
container = await docker.containers.get(settings.NAVIDROME_CONTAINER)
|
||||
|
||||
logging.info(f"Monitoring logs for container '{settings.NAVIDROME_CONTAINER}'...")
|
||||
@@ -201,10 +195,7 @@ async def main():
|
||||
logging.exception("An unexpected error occurred")
|
||||
finally:
|
||||
if docker:
|
||||
# aiodocker doesn't close sessions it doesn't own.
|
||||
await docker.close()
|
||||
if session:
|
||||
await session.close()
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
|
||||
Reference in New Issue
Block a user