Files
Magnus Müller b552005356 Increase BrowserStateRequestEvent timeout from 30s to 60s
Production data analysis (BU2, 24h) shows:
- 36.5% of consecutive failures are AsyncIO CancelledError in get_browser_state_summary
- Complex pages can take 30-60s for DOM extraction alone
- 30s timeout was too aggressive for heavy pages

60s provides 2x buffer while still catching genuinely stuck requests.
Can be overridden via TIMEOUT_BrowserStateRequestEvent env var.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-29 02:06:56 -08:00
..
2026-01-10 20:00:18 -08:00
2025-08-26 14:23:40 -07:00
2026-01-27 10:35:41 -08:00
2025-11-26 10:40:34 -08:00
2025-09-19 19:36:53 -07:00
2026-01-27 10:35:41 -08:00
2026-01-23 16:38:38 -05:00
2025-03-28 18:11:36 -07:00
2025-09-23 20:03:26 -07:00
2025-07-21 12:59:11 +02:00
2024-11-06 18:18:00 +01:00

Codebase Structure

The code structure inspired by https://github.com/Netflix/dispatch.

Very good structure on how to make a scalable codebase is also in this repo.

Just a brief document about how we should structure our backend codebase.

Code Structure

src/
/<service name>/
models.py
services.py
prompts.py
views.py
utils.py
routers.py

    	/_<subservice name>/

Service.py

Always a single file, except if it becomes too long - more than ~500 lines, split it into _subservices

Views.py

Always split the views into two parts

# All
...

# Requests
...

# Responses
...

If too long → split into multiple files

Prompts.py

Single file; if too long → split into multiple files (one prompt per file or so)

Routers.py

Never split into more than one file