Spaces:
Paused
Paused
Download Browser_Agent/main.py from Luca448/APP-Backend: direct link, hf CLI and curl.
- Browser
- Download file 2.56 kB
-
https://huggingface.co/spaces/Luca448/APP-Backend/resolve/main/Browser_Agent/main.py
- Command line
-
hf download hf://spaces/Luca448/APP-Backend/Browser_Agent/main.py
-
curl -L -o main.py https://huggingface.co/spaces/Luca448/APP-Backend/resolve/main/Browser_Agent/main.py
2.56 kB
| import uvicorn | |
| import logging | |
| import asyncio | |
| import subprocess | |
| from config.settings import settings | |
| from api.server import app | |
| from messenger.telegram_bot import create_telegram_app | |
| from job_queue.task_queue import task_queue, worker_loop | |
| from browser.manager import browser_manager | |
| from agent.brain import AgentBrain | |
| logging.basicConfig( | |
| level=logging.INFO, | |
| format='[BROWSER] %(asctime)s - %(name)s - %(levelname)s - %(message)s' | |
| ) | |
| logger = logging.getLogger(__name__) | |
| worker_handles: list[asyncio.Task] = [] | |
| brain: AgentBrain | None = None | |
| async def start_background_services(): | |
| global brain | |
| # Start Tor Daemon | |
| try: | |
| subprocess.Popen(["tor"], stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL) | |
| logger.info(f"Tor daemon started on port {settings.tor_socks_port}.") | |
| except FileNotFoundError: | |
| logger.warning("Tor daemon executable not found. Ghost Mode will not work unless Tor is installed.") | |
| except Exception as e: | |
| logger.error(f"Failed to start Tor daemon: {e}") | |
| # Start Telegram Bot if configured | |
| telegram_app = None | |
| if settings.telegram_bot_token: | |
| telegram_app = create_telegram_app() | |
| await telegram_app.initialize() | |
| await telegram_app.start() | |
| await telegram_app.updater.start_polling() | |
| logger.info("Telegram Bot gestartet.") | |
| # Start Task Queue Worker | |
| await task_queue.initialize() | |
| brain = AgentBrain() | |
| for worker_index in range(max(1, settings.max_concurrent_browsers)): | |
| handle = asyncio.create_task( | |
| worker_loop( | |
| task_queue, | |
| brain, | |
| browser_manager, | |
| telegram_app.bot if telegram_app else None, | |
| ), | |
| name=f"agent-worker-{worker_index + 1}", | |
| ) | |
| worker_handles.append(handle) | |
| logger.info("Background services started.") | |
| async def startup_services(): | |
| await start_background_services() | |
| async def shutdown_services(): | |
| for handle in worker_handles: | |
| handle.cancel() | |
| if worker_handles: | |
| await asyncio.gather(*worker_handles, return_exceptions=True) | |
| if brain: | |
| await brain.close() | |
| await browser_manager.close_all() | |
| await task_queue._store.close() | |
| if __name__ == "__main__": | |
| # Startet den internen Uvicorn Server auf Port 8765 (offen für den Verkehrspolizisten) | |
| uvicorn.run( | |
| "main:app", | |
| host="0.0.0.0", | |
| port=settings.internal_api_port, | |
| reload=False | |
| ) | |