2013-11-01 2 views
3

Я знаю о app.after_request и app.teardown_request, но есть ли способ запустить команду регистрации после ответ был сброшен клиенту. таким образом, чтобы это не повлияло на производительность клиента?Фланец - Запись после ответа размыта

+1

Я сомневаюсь, что это легко возможно. Флажок выполняется поверх [WSGI] (http://wsgi.readthedocs.org/en/latest/), который определяет, как код Python (например, Flask или Django) получает информацию о запросе и возвращает результаты. Сама функция довольно проста, но то, что является импортом, заключается в том, что Flask должен будет вернуть тело информации (и, таким образом, прекратить свою способность запускать код, поскольку поток возвращается к коду, который называется флягой, например mod_wsgi). Могут быть способы обойти это ограничение, но если вы не захотите вникать в кишки WSGI и Flask, вы, вероятно, должны оставить это в покое. –

ответ

2

У меня возникло соблазн сказать, что сигнал request_finished будет работать, но, проверяя его сейчас, он дожидается до тех пор, пока слушатель не закончит, прежде чем вернуться к пользователю.

Так что я думаю, что это оставляет вас с реализацией очереди задач. Флакс имеет некоторую документацию по работе getting Celery based background tasks. Поэтому, когда вы достигаете команды медленного ведения журнала, вместо этого вы просто добавляете задачу в очередь Celery, завершите свой ответ пользователю, а затем пусть работник Celery позаботится о задаче, насколько это возможно.

Смежные вопросы