Уведомления

Группа в Telegram: @pythonsu

#1 Сен. 28, 2016 14:10:05

blindpew
Зарегистрирован: 2016-09-28
Сообщения: 9
Репутация: +  0  -
Профиль   Отправить e-mail  

IIS 8.5 + Python + FastCGI/WSGI

Здравствуйте.
Помогите, пожалуйста, разобраться в работе Питона через WSGI.

Питон подключен через FastCGI и вроде даже работает, но не совсем так как надо, при запросе любого файла с расширением “.py” отрабатывает программа “application.py”.

Хочется чтобы при запросе “site.ru/script.py” выполнялся файл “script.py”, а при “site.ru/info.py” файл “info.py”.

Текущая конфигурация:

web.config:

 <?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <handlers>
            <add name="Python" path="*.py" verb="*" modules="FastCgiModule" scriptProcessor="C:\Program Files\Python35\python.exe|&quot;C:\Program Files\Python35\Lib\site-packages\wfastcgi.py&quot;" resourceType="File" requireAccess="Script" />
        </handlers>
    </system.webServer>
    <appSettings>
        <add key="WSGI_HANDLER" value="application.wsgi()" />
        <add key="PYTHONPATH" value="C:\inetpub\wwwroot" />
    </appSettings>
</configuration>

application.py:
 class wsgi:
    def __call__(self, environ, start_response):
        start_response('200 OK', [('Content-Type', 'text/html')])
        return [bytes("<h1>Hello world!</h1> ", "UTF-8")]
 

Офлайн

#2 Сен. 30, 2016 09:48:18

blindpew
Зарегистрирован: 2016-09-28
Сообщения: 9
Репутация: +  0  -
Профиль   Отправить e-mail  

IIS 8.5 + Python + FastCGI/WSGI

Подскажите, пожалуйста, внятную инструкцию по установке Python на IIS. Возможно я что-то не правильно сделал.

Офлайн

#3 Сен. 30, 2016 10:11:56

blindpew
Зарегистрирован: 2016-09-28
Сообщения: 9
Репутация: +  0  -
Профиль   Отправить e-mail  

IIS 8.5 + Python + FastCGI/WSGI

Почему этот код работает:

 class wsgi:
	def __call__(self, environ, start_response):
		start_response('200 OK', [('Content-Type', 'text/html')])
		return [bytes("<h1 style='color:blue'>Hello world!</h1> ", "UTF-8")]

А вот этот вываливается с ошибкой:
TypeError: wsgi() missing 2 required positional arguments: ‘environ’ and ‘start_response’

 def wsgi(environ, start_response):
	start_response('200 OK', [('Content-Type', 'text/html')])
	return [bytes("<h1 style='color:blue'>Hello world!</h1> ", "UTF-8")]

Офлайн

#4 Сен. 30, 2016 13:50:05

blindpew
Зарегистрирован: 2016-09-28
Сообщения: 9
Репутация: +  0  -
Профиль   Отправить e-mail  

IIS 8.5 + Python + FastCGI/WSGI

И вот так работает:

 def wsgicb(environ, start_response):
	start_response('200 OK', [('Content-Type', 'text/html')])
	return [bytes("<h1 style='color:blue'>Hello world!</h1> It's me!", "UTF-8")]
def wsgi():
	return wsgicb

Офлайн

#5 Окт. 1, 2016 01:27:55

blindpew
Зарегистрирован: 2016-09-28
Сообщения: 9
Репутация: +  0  -
Профиль   Отправить e-mail  

IIS 8.5 + Python + FastCGI/WSGI

Всё решилось удалением скобочек из параметра "WSGI_HANDLER"

 <add key="WSGI_HANDLER" value="application.wsgi" />

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version