SQLAlchemy: запись в базу данных после отправки ответа - PullRequest
0 голосов
/ 03 сентября 2010

У меня есть простой сервис, который выполняет примерно следующее:

  1. HTTP-клиент подключается к серверу
  2. Сервер записывает sessionID клиента и метку времени в базу данных и в большинстве случаев просто возвращает пустой ответ

(случаи, когда он действительно работает и возвращает фактические данные, не имеют отношения к этому вопросу)

Чтобы вернуть этот ответ как можно скорее, я хотел бы записать информацию в memcache в теле обработчика запросов (потому что memcache работает быстро) и создать отдельный поток, в который его запишет другая функция, использующая SQLAlchemy на постоянное хранение. Таким образом, я смогу вернуться сразу после записи в memcache и создания потока, и обработчику запросов не придется ждать, пока SQLAlchemy сохранит информацию в базе данных.

Имеет ли это смысл? Если да, то как мне это реализовать?

1 Ответ

2 голосов
/ 03 сентября 2010

Вы можете использовать что-то вроде распределенной очереди задач Celery , чтобы переложить обработку на другие машины.Это требует настройки отдельной инфраструктуры, но позволит передавать задачи из веб-запросов для обработки в фоновом режиме, а ответ HTTP на запрос может быть возвращен немедленно.

...