Home › Curriculum › Odoo Developer › Odoo architecture
Framework and architecture · 16 min · 17–20Odoo architecture
The multi-tier design: PostgreSQL, the Python server with the ORM and registry, HTTP and RPC, the OWL web client, workers and crons.
In this lesson
- Three tiers and the request path
- Databases, modules and the registry
- Workers, gevent, crons and limits
Key points
- PostgreSQL ↔ Python server (ORM, registry, HTTP, QWeb, crons) ↔ OWL web client via JSON-RPC
- Registry per database built from installed modules in dependency order
- Python change → restart; XML/data change → module update (-u)
- Workers for HTTP, gevent (8072) for websocket bus, cron workers; resource limits
Real-world example
Users saw 'connection lost' banners all day after a move to a new server. Nginx proxied 8069 but not /websocket to 8072, so the live bus kept failing. Adding the websocket location with upgrade headers fixed notifications and Discuss instantly.
Questions and answers
Why can one Odoo server serve several databases?
Each request selects a database (dbfilter/host) and uses that database's registry.
What happens to a worker exceeding limit_memory_hard?
It's killed and replaced.