Django: variáveis no nível do aplicativo
Eu criei um aplicativo Django-rest-framework. Ele expõe alguma API que realiza algumas operações de obtenção / configuração no banco de dados MySQL.
Eu tenho um requisito de fazer uma solicitação HTTP para outro servidor e pegar essa resposta junto com a resposta usual. Estou tentando usar um pool de conexões HTTP auto-criado para fazer solicitações HTTP em vez de fazer novas conexões em cada solicitação.
Qual é o local mais apropriado para manter este objeto de pool de conexões HTTP no nível do aplicativo?
Eu olhei em volta e há várias soluções, cada uma com alguns contras. Aqui estão alguns:
Para criar uma classe singleton do pool em um arquivo diff, mas essa não é uma boa maneira pitônica de fazer as coisas. Existem várias discussões sobre por que não usar o padrão de design singleton.
Além disso, não sei o quão inteligente seria agrupar um pooler? (: P)
Para mantê-loiniciar.py do diretório do aplicativo. O problema é o seguinte:Deve conter apenas importações e itens relacionados a isso.Será difícil testar o código da unidade porque a importação aconteceria antes da zombaria e tentaria realmente atingir a API.Para usar sessões, mas acho que faz mais sentido se fosse algo específico da sessão do usuário, como um número específico do usuário, etc.
Além disso, o objeto precisa ser serializado. Não sei como o pool de conexões HTTP pode ser serializado.
Mantê-lo global em views.py, mas isso também é desencorajado.Qual é o melhor local para armazenar essas variáveis de aplicativo / nível global?