У нас есть приложение WSGI с Python3, работающее под Apache Linux.WSGI с последующей обработкой RESTful
Мы хотим взаимодействовать с внешним API после подтверждения запроса/уведомление, полученное с помощью веб-сервера
Пример кода WSGI питон:
def application(environ, start_response): path= environ.get('PATH_INFO', '') if path == "/ProcessTransact": import sys sys.stderr.write("Entering /ProcessTransact, Checking validity ...\n") # Get the context of the notification/request from Post parameters etc, assume it is a valid ... status = '200 OK' body = b"Acknowledge the valid submit with '200 OK'" response_headers = [ ('Content-Type', 'text/html'), ('Content-Length', str(len(body))) ] start_response(status, response_headers) return [body] # we have acknowledged the context of the above request # we want to do an HTTP POST based on the context # When we return [body], we lost the processing thread import requests #or maybe something else sys.stderr.write("POST RESTful transactions here after acknowledging the request (we never get here).\n")
Наш код немного отличается от образца кода (с использованием Werkzeug).
Каков наилучший способ решить эту проблему? Мы целенаправленно не использует каких-либо рамок (кроме Werkzeug), и мы хотим, чтобы избежать больших изменений в архитектуре (тысячи строк кода)
Спасибо вам, Kris
Прочитать http://modwsgi.readthedocs.io/en/develop/user-guides/registering-cleanup-code.html Это становится беспорядочным. –
Спасибо @GrahamDumpleton - эти варианты немного новы для меня. Использование «try» и «finally» в фреймворке Exception - вариант, - Im задается вопросом, может ли использование рамки Exception непреднамеренно привести к головным болям позже. Например, если вы хотите инициировать последовательность взаимодействий RESTful. Вы указываете, что «atexit» может быть не переносимым, поэтому, возможно, менее желательно. –
Является ли разница между WSGI и Python RESTful развязкой HHTP-соединения из потока? Интересно, есть ли что-то вроде простого модуля PESTON RESTful, который можно было бы подключить к Apache Alias / Directory? –