Найти - Пользователи
Полная версия: IIS 8.5 + Python + FastCGI/WSGI
Начало » Python для новичков » IIS 8.5 + Python + FastCGI/WSGI
1
blindpew
Здравствуйте.
Помогите, пожалуйста, разобраться в работе Питона через 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")]
 
blindpew
Подскажите, пожалуйста, внятную инструкцию по установке Python на IIS. Возможно я что-то не правильно сделал.
blindpew
Почему этот код работает:
 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")]
blindpew
И вот так работает:
 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
blindpew
Всё решилось удалением скобочек из параметра "WSGI_HANDLER"
 <add key="WSGI_HANDLER" value="application.wsgi" />
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB