Я разрабатываю REST API во Flask.Некоторые конечные точки должны выполнять дополнительные обязанности после обработки ответа, но я бы хотел избежать использования внешней очереди обработки или потоков.Как представляется, одним из очень удобных решений является использование промежуточного программного обеспечения WSGI и ClosingIterator, как указано в в этом ответе .Однако обработчик каждой точки должен знать, какая конечная точка обработала запрос, чтобы выполнить свои посмертные обязанности.
Одна идея состоит в том, чтобы украсить мои конечные точки следующим образом:
@app.route('/api/status/info', methods=['GET'])
def get_status_info():
@app.after_this_response('get_status_info')
def say_hi():
print('hi, unknown endpoint!')
return 'ok', 200
Вместо unknown endpoint
я хотел бы напечатать get_status_info
.Возможно ли это?
Еще лучше, если я напишу общий обработчик @app.after_response
(как в другой ответ того же автора), могу ли я определить, какая конечная точка использовалась для обработкизапрос?
РЕДАКТИРОВАТЬ: При попытке использовать flask.request.url_rule.endpoint
выдает исключение:
RuntimeError: Working outside of request context.