Als ein kompletter Python-Neuling, der gerade die kostenlosen Lektionen in der Codeacademy abgeschlossen hat, folgte ich den Anweisungen auf this Python wfastcgi 2.2 page und installierte erfolgreich den Python-Handler auf IIS.Wie beginne ich die Python-Webprogrammierung mit WFastCGI + IIS + Python 3.4?
Dann habe ich eine Python-Datei (Modul) my_app.py
gemäß der web.config
mit dem folgenden Code (was ich von irgendwo angepasst):
def wsgi_app(environ, start_response):
status = '200 OK'
response_headers = [('Content-type','text/plain')]
start_response(status, response_headers)
return ['Hello world!\n']
Nach auf den lokalen Host-Website navigieren, gibt IIS den folgenden Fehler:
Error occurred while reading WSGI handler:
Traceback (most recent call last):
File "C:\Python34\lib\site-packages\wfastcgi.py", line 779, in main
env, handler = read_wsgi_handler(response.physical_path)
File "C:\Python34\lib\site-packages\wfastcgi.py", line 621, in read_wsgi_handler
handler = get_wsgi_handler(os.getenv('WSGI_HANDLER'))
File "C:\Python34\lib\site-packages\wfastcgi.py", line 594, in get_wsgi_handler
handler = handler()
TypeError: wsgi_app() missing 2 required positional arguments: 'environ' and 'start_response'
StdOut:
StdErr:
Frage:
- Wie und was gebe ich für die 2 Funktionsargumente?
- Das Starten des Moduls mit einer Funktion scheint keine gute Idee zu sein. Kann ich stattdessen eine Klasse verwenden? Wenn ja, wie soll ich meine
web.config
auf dieser Linie ändern:
<add key="WSGI_HANDLER" value="my_app.wsgi_app()" />
Was bedeuten die letzten fehlerhaften Baumzeilen? – linusg
Sie rufen die Funktion nicht auf, WSGI tut dies, so dass Sie sich keine Gedanken darüber machen müssen, was sie übergibt. Und Python ist völlig in Ordnung mit Funktionen auf der obersten Ebene; Hier ist keine Klasse erforderlich. Schließlich würde dieser Code diesen Fehler nicht geben; Bitte posten Sie den eigentlichen Code. –
Hoppla, du hast Recht. Es gab eine index.php verwirrte die Standard-Dokumentenverarbeitung, denke ich. Der Fehler wurde aktualisiert. – Jake