Quoi qu'il en soit, python est très facile à écrire une simple application API Web. Flask est un framework qui tire parti de cette commodité et facilite le routage de chemin. Un exemple d'écriture d'applications API en python avec Azure App Service est également disponible dans Flask (https://docs.microsoft.com/ja-jp/azure/app-service-web/app-service-web) -get-started-python). Mon travail principal est java, mais la plupart des programmes sans contrainte de langage sont écrits en python, et si je déploie une API à l'aide de Flask vers des applications API avec la même colle, cela ne fonctionne pas.
Ce qui n'a pas fonctionné, c'est que @ app.route () de Flask ne fonctionnait pas.
Pour être précis, @ app.route (" / ")
fonctionne, mais quelque chose comme @ app.route (" / user / <id> / status ")
ne fonctionne pas. GET / user / 1 / status HTTP / 1.1
renvoie avec IIS (?) 404.
Ce qui ne va pas avec cela, c'est que (probablement) Web Apps a IIS sur le devant et est envoyé à Flask en python, mais par défaut, seul "/" est passé à Flask, / user Je pense que c'est parce que les chemins comme / 1 / status sont hors de portée [^ 1].
[^ 1]: Je suis tellement nouveau dans Azure App Service que je ne sais même pas comment lire le journal, mais le fantôme le chuchote.
S'il s'agit de java, cela est réalisé en enregistrant le servlet à traiter avec le modèle d'url dans le conteneur d'application Web, et s'il s'agit de cgi, le serveur HTTP est mappé avec le gestionnaire de requêtes. Je peux donc imaginer que j'enseigne aux Web Apps comment se déplacer. Selon Configuration de Python avec les applications Web Azure App Service
Pour spécifier la manière dont le serveur traite la demande, vous devez créer un fichier web.config. Si le référentiel a un fichier web.x.y.config (où x.y est le runtime Python de votre choix), Azure copiera automatiquement le fichier approprié en tant que web.config.
une. Cette fois, j'essayais de l'exécuter avec python3.4, donc je pense que je devrais faire quelque chose avec web.3.4.config
.
Tout d'abord, ** Je ne peux pas assumer la responsabilité même si je lis ceci et que je le mets en œuvre et que la sécurité devient sournoise, alors veuillez juger s'il n'y a pas de problème par vous-même (lecture de la barre) **
Alors, comment le faire, comme décrit dans [l'article] précédent (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>
Si tel est le cas, il semble que le routage comme @ app.route (" / user / <id> / status ")
fonctionnera correctement [^ 2].
La définition de <rule name =" Configure Python "stopProcessing =" true "> ~ </ rule>
dans <system.webServer> Hogehogehoge </ system.webServer>
accroche le modèle d'URL et python Il semble que j'essaie de le donner, mais j'essaye de vérifier à nouveau l'opération.
Peut-être que vous pouvez voir comment cela fonctionne en lisant la documentation IIS.
[^ 2]: Bien sûr, vous devez considérer que le contenu statique peut également être géré par Flask.
Recommended Posts