Доступ к данным POST из WSGI

Я не могу понять, как получить доступ к данным POST с помощью WSGI. Я попробовал пример на веб-сайте wsgi.org, и это не сработало. Я использую Python 3.0 прямо сейчас. Пожалуйста, не рекомендуется использовать среду WSGI, поскольку это не то, что я ищу.

Я хотел бы выяснить, как получить его в объект fieldstorage.

5 Solutions collect form web for “Доступ к данным POST из WSGI”

Предполагая, что вы пытаетесь получить только данные POST в объект FieldStorage:

# env is the environment handed to you by the WSGI server. # I am removing the query string from the env before passing it to the # FieldStorage so we only have POST data in there. post_env = env.copy() post_env['QUERY_STRING'] = '' post = cgi.FieldStorage( fp=env['wsgi.input'], environ=post_env, keep_blank_values=True ) 
 body= '' # b'' for consistency on Python 3.0 try: length= int(environ.get('CONTENT_LENGTH', '0')) except ValueError: length= 0 if length!=0: body= environ['wsgi.input'].read(length) 

Обратите внимание, что WSGI еще не полностью определен для Python 3.0, и большая часть популярной инфраструктуры WSGI не была преобразована (или была 2to3d, но не проверена надлежащим образом). (Даже wsgiref.simple_server не будет запущен.) Сегодня вы используете WSGI 3.0.

Это сработало для меня (в Python 3.0):

 import urllib.parse post_input = urllib.parse.parse_qs(environ['wsgi.input'].readline().decode(),True) 

Еще короче

 l = int(env.get('CONTENT_LENGTH')) if env.get('CONTENT_LENGTH') else 0 body = env['wsgi.input'].read(l) if l > 0 else '' 

Этот код работает в производстве.

Я бы предложил вам посмотреть, как некоторые структуры делают это для примера. (Я не рекомендую ни одного, просто используя их в качестве примера.)

Вот код от Werkzeug :

http://dev.pocoo.org/projects/werkzeug/browser/werkzeug/wrappers.py#L150

который вызывает

http://dev.pocoo.org/projects/werkzeug/browser/werkzeug/utils.py#L1420

Здесь немного сложно суммировать, поэтому я этого не сделаю.

  • uWSGI AJAX, чтение запроса
  • AWS Elastic Beanstalk - время ожидания скрипта перед возвратом заголовков: application.py
  • Может ли кто-нибудь дать мне технический обзор WSGI на высоком уровне за кулисами и другим веб-интерфейсом с Python?
  • django apache mod-wsgi зависает при импорте модуля python из файла .so
  • Разница между утилитами WSGI и веб-серверами
  • Как обслуживать данные из потока UDP через HTTP в Python?
  • Исправление ошибки обрыва трубы в uWSGI с помощью Python
  • Пути Django WGSI
  • apache2 и mod wsgi: целевой WSGI-скрипт нельзя загрузить как модуль Python
  • Что происходит, когда я устанавливаю app.wsgi_app = ProxyFix (app.wsgi_app) при запуске приложения Flask на gunicorn?
  • Apache mod_wsgi и php в том же домене
  • Python - лучший язык программирования в мире.