Sqlalchemy: escrevendo para o banco de dados após a resposta
-
26-09-2019 - |
Pergunta
Eu tenho um serviço simples que faz aproximadamente o seguinte:
- Um cliente HTTP se conecta ao servidor
- O servidor escreve o SessionID do cliente e o registro de data e hora no banco de dados e, na maioria dos casos, apenas retorna uma resposta vazia
(Os casos em que faz trabalho real e retornam dados reais são irrelevantes para esta questão)
Para retornar essa resposta o mais rápido possível, gostaria de escrever as informações para o Memcache no corpo do manipulador de solicitação (porque o memcache é rápido) e gerar um tópico separado em que outra função usando sqlalchemy o escreverá para o persistente armazenar. Dessa forma, poderei voltar imediatamente depois de escrever para o Memcache e a desova de um tópico, e o manipulador de solicitação não precisará esperar até que o SQLalChemy salve as informações no banco de dados.
Isso faz sentido? Se sim, como devo implementá -lo?
Solução
Você poderia usar algo como o Fila de tarefas distribuídas ao aipo Para descarregar o processamento para outras máquinas. Exige a configuração de uma infraestrutura separada, mas permitirá que as tarefas sejam entregues das solicitações da Web de processamento em segundo plano, enquanto o HTTP repsonse à solicitação pode ser retornado imediatamente.