Есть ли RequestHandler эквивалент вызова finalize () для python? - PullRequest
1 голос
/ 16 января 2012

Обработчики на основе webapp.RequestHandler могут переопределить initialize () для выполнения настройки.Есть ли аналогичный finalize ()?Могу ли я переопределить del () для достижения этой цели?

По сути, я хочу сделать некоторые записи в журнале после завершения функций post / get, чтобы они не находились на критическом путиОтвет обратно в браузер ..

Я мог бы (1) сделать это в этом вызове 'finalize', предполагая, что он вызывается после того, как Ответ отправлен в браузер, или (2) перенести работу на отдельныйтокарно-бассейн-очереди.Если есть способ сделать первый, это было бы намного проще / проще.

Спасибо.

1 Ответ

1 голос
/ 16 января 2012

Вы можете переопределить __del__, но это опасно (может привести к появлению циклов GC и объектов, которые невозможно собрать) и ничего вам не даст.

Вы ничего не получите, потому что во время выполнения App Engineне возвращать ответ пользователю до тех пор, пока приложение WSGI не вернулось, что не происходит, пока не завершится выполнение всего пользовательского кода.Аналогично, потоки во внешнем интерфейсе не могут работать дольше, чем объем запроса, для которого они были созданы.

Если вы хотите выполнить работу вне области запроса, вам следует использовать Очередь задач.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...