Abrir uma conexão com o PostgreSQL não é propriamente a definição da palavra lento, mas é uma coisa que pode ser facilmente otimizada.
Se você usa o banco de dados em um servidor diferente, ou mesmo se usa localmente, abrir uma nova conexão pode demorar alguns milissegundos.
Eu uso o Opbeat para monitorar a performance do meu projeto, observando o breakdown do tempo gasto em cada camada da aplicação, dá pra observar que mesmo 27.5ms representam, na minha Home, 23% do tempo de chamada da requisição.
Levando isso em consideração, vale a pena dar uma olhada nas conexões persistentes de banco de dados no Django, built-in desde a versão 1.6.
DATABASES = { ‘default’: { ‘ENGINE’: ‘django.db.backends.postgresql_psycopg2’, ‘NAME’: ‘blabla’, ‘CONN_MAX_AGE’: 600, } }
O parâmetro CONN_MAX_AGE é configurado em segundos, sendo assim ele vai manter a conexão por 10 minutos. Ajuste e teste de acordo com o seu projeto.
Tá, mas qual o resultado disso? Vamos ver agora.
Aqui o tempo médio de chamada da Home antes de eu alterar a configuração:
E aqui o tempo médio depois de configurar a persistência da conexão:
Então é isso, 35% de ganho com uma linha no settings.