Событие запроса после обработки в Pyramid / Pylons - PullRequest
2 голосов
/ 16 февраля 2011

Есть событие или какая-то работа с промежуточным слоем, когда запрос уже отправлен пользователю, но у нас все еще есть информация, чтобы мы могли что-то сделать в БД позже?

Ответы [ 2 ]

2 голосов
/ 17 февраля 2011

Как вы, вероятно, уже знаете, вы можете сделать до обработки запроса с помощью: http://docs.pylonsproject.org/projects/pyramid/1.0/narr/events.html#configuring-an-event-listener-imperatively

Для обработки содержимого после запроса (без использования промежуточного программного обеспечения) вам нужно добавить готовыйобратный вызов запроса, который демонстрируется здесь: http://docs.pylonsproject.org/projects/pyramid/1.0/api/request.html#pyramid.request.Request.add_finished_callback

Конечно, этот завершенный обратный вызов происходит только в рамках одного запроса.Вы можете обрабатывать все запросы, комбинируя два:

from pyramid.events import NewRequest

def do_something(request):
    # do something here
    pass

def setup_post_request(event):
    event.request.add_finished_callback(do_something)

config.add_subscriber(setup_post_request, NewRequest)
1 голос
/ 16 февраля 2011

В Pylons каждый контроллер может иметь до и после методов, которые вы можете определить, которые затем будут вызываться до / после вызова метода контроллера.

Существует также файл lib / base.py, который содержит вызов контроллера, и вы можете добавить туда некоторый пользовательский код, но он будет вызываться при каждом запросе и может быть опасным, если ваш код вызывает некоторые ошибки.

Я не уверен в Pyramid.

Если вы делаете что-то в пользовательском промежуточном программном обеспечении, у вас будет доступ к объектам запроса и ответа, но не к другому материалу.Теоретически вы могли бы разобрать конфигурацию .ini для настроек БД и тому подобного, но если это действительно часть приложения, я бы оставался там.

...