Wie auch immer, Python ist sehr einfach, eine einfache Web-API-Anwendung zu schreiben. Flask ist ein Framework, das diesen Komfort nutzt und das Routing von Pfaden vereinfacht. Ein Beispiel zum Schreiben von API-Apps in Python mit Azure App Service ist auch in Flask verfügbar (https://docs.microsoft.com/ja-jp/azure/app-service-web/app-service-web). -get-Started-Python). Meine Hauptaufgabe ist Java, aber die meisten sprachunabhängigen Programme sind in Python geschrieben. Wenn ich eine API mit Flask für API-Apps mit demselben Klebstoff bereitstelle, funktioniert dies nicht.
Was nicht funktionierte war, dass Flask's @ app.route () nicht funktionierte.
Um genau zu sein, funktioniert "@ app.route (" / ")", aber so etwas wie "@ app.route (" / user / GET / user / 1 / status HTTP / 1.1
wird mit IIS (?) 404 zurückgegeben.
Was daran falsch ist, ist, dass (wahrscheinlich) Web Apps IIS auf der Vorderseite hat und an Flask of Python versendet, aber standardmäßig wird nur "/" an Flask, / user übergeben Ich denke, das liegt daran, dass Pfade wie / 1 / status außerhalb des Gültigkeitsbereichs liegen [^ 1].
[^ 1]: Ich bin so neu im Azure App Service, dass ich nicht einmal weiß, wie man das Protokoll liest, aber der Geist flüstert es.
Wenn dies Java ist, wird dies durch Registrieren des zu verarbeitenden Servlets mit URL-Muster im Webanwendungscontainer realisiert. Wenn es sich um CGI handelt, ordnet HTTP Server dem Anforderungshandler zu. Ich kann mir also vorstellen, dass ich Web Apps das Bewegen beibringe. Laut Konfigurieren von Python mit Azure App Service-Webanwendungen
Um anzugeben, wie der Server die Anforderung verarbeitet, müssen Sie eine web.config-Datei erstellen. Wenn das Repository über eine web.x.y.config-Datei verfügt (wobei x.y die Python-Laufzeit Ihrer Wahl ist), kopiert Azure die entsprechende Datei automatisch als web.config.
ein. Dieses Mal habe ich versucht, es mit python3.4 auszuführen, daher denke ich, ich sollte etwas mit web.3.4.config
machen.
Zuallererst ** kann ich keine Verantwortung übernehmen, selbst wenn ich dies lese und implementiere und die Sicherheit schlampig wird. Bitte beurteilen Sie selbst, ob es kein Problem gibt (Lesen in der Leiste) **
Wie es geht, wie im vorherigen [Artikel] beschrieben (https://docs.microsoft.com/ja-jp/azure/app-service-web/web-sites-python-configure#webconfig)
xml:web.3.4.config
<?xml version="1.0"?>
<configuration>
<appSettings>
<add key="WSGI_ALT_VIRTUALENV_HANDLER" value="app.wsgi_app" />
<add key="WSGI_ALT_VIRTUALENV_ACTIVATE_THIS"
value="D:\home\site\wwwroot\env\Scripts\python.exe" />
<add key="WSGI_HANDLER"
value="ptvs_virtualenv_proxy.get_venv_handler()" />
<add key="PYTHONPATH" value="D:\home\site\wwwroot" />
</appSettings>
<system.web>
<compilation debug="true" targetFramework="4.0" />
</system.web>
<system.webServer>
<modules runAllManagedModulesForAllRequests="true" />
<handlers>
<remove name="Python27_via_FastCGI" />
<remove name="Python34_via_FastCGI" />
<add name="Python FastCGI"
path="handler.fcgi"
verb="*"
modules="FastCgiModule"
scriptProcessor="D:\Python34\python.exe|D:\Python34\Scripts\wfastcgi.py"
resourceType="Unspecified"
requireAccess="Script" />
</handlers>
<rewrite>
<rules>
<rule name="Static Files" stopProcessing="true">
<conditions>
<add input="true" pattern="false" />
</conditions>
</rule>
<rule name="Configure Python" stopProcessing="true">
<match url="(.*)" ignoreCase="false" />
<conditions>
<add input="{REQUEST_URI}" pattern="^/static/.*" ignoreCase="true" negate="true" />
</conditions>
<action type="Rewrite" url="handler.fcgi/{R:1}" appendQueryString="true" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>
Wenn dies der Fall ist, scheint das Routing wie "@ app.route (" / user / <rule name =" Configure Python "stopProcessing =" true "> ~ </ rule>
in <system.webServer> Hogehogehoge </ system.webServer>
verknüpft das URL-Muster und Python Es scheint, dass ich versuche, es zu geben, aber ich versuche, den Vorgang erneut zu überprüfen.
Vielleicht können Sie sehen, wie es funktioniert, indem Sie die IIS-Dokumentation lesen.
[^ 2]: Natürlich müssen Sie berücksichtigen, dass statische Inhalte auch von Flask verarbeitet werden können.
Recommended Posts