Débogage à distance de code Python sur AzureRemotely debugging Python code on Azure

Prise en charge de Python dans Visual Studio permet de déboguer à distance le code Python qui s’exécute sur Azure App Service.Python support in Visual Studio includes the ability to remotely debugging Python code that's running on Azure App Service. Contrairement à un débogage à distance simple, l’ordinateur cible dans ce scénario n’est pas directement accessible par le biais de TCP. Visual Studio fournit donc un proxy qui expose le protocole de débogueur sur HTTP.Unlike simple remote debugging, the target computer in this scenario is not directly accessible over TCP, so Visual Studio provides a proxy that exposes the debugger protocol over HTTP. Les projets créés à l’aide du modèle Web configurent automatiquement ce proxy dans le fichier web.debug.config généré.Projects created using the Web template automatically configure this proxy in the generated web.debug.config file. Le débogage à distance est également activé lorsque vous publiez une configuration de débogage de votre projet, comme décrit à la section Publication sur Azure App Service.Remote debugging is also enabled when you publish a Debug configuration of your project as described on Publishing to Azure App Service.

Étant donné que le débogage à distance Azure utilise des sockets web, vous devez activer les sockets pour votre App Service par le biais du Portail Azure en accédant à Paramètres > Paramètres de l’application, en définissant l’option Paramètres généraux > Web sockets sur Activer, puis en sélectionnant Enregistrer pour appliquer la modification.Because Azure remote debugging uses web sockets, sockets must be enabled for your App Service through the Azure portal by going to Settings > Application settings and turning General settings > Web sockets to On, then selecting Save to apply the change. (Notez que les paramètres Débogage ne s’appliquent pas au débogage de Python.)(Note that the Debugging settings do not apply to debugging Python.)

Activation de sockets web dans le Portail Azure

Une fois que votre projet est correctement déployé et que les sockets web sont activés, vous pouvez effectuer l’attachement à App Service à partir de l’Explorateur de serveurs dans Visual Studio (Affichage > Explorateur de serveurs).Once your project is properly deployed and web sockets enabled, you can attach to the App Service from Server Explorer in Visual Studio (View > Server Explorer). Recherchez votre site sous Azure > App Service et le groupe de ressources applicable, cliquez avec le bouton droit, puis sélectionnez Attacher le débogueur (Python).Locate your site under Azure > App Service and the applicable resources group, right-click, and select Attach Debugger (Python). (La commande Attacher le débogueur pour les applications .NET s’exécutant sous IIS n’est utile que si vous co-hébergez un code .NET en même temps que votre application Python.)(The Attach Debugger command as that's for .NET applications running under IIS, and is useful only if you co-host .NET code alongside your Python app.)

Visual Studio peut vous diriger directement vers un ensemble d’instructions permettant d’effectuer un attachement direct, comme décrit ci-dessous à la section Attachement sans l’Explorateur de serveurs.Visual Studio may take you directly to a set of instructions for attaching directly, as described below in Attaching without Server Explorer. Si la commande Attacher le débogueur (Python) n’apparaît pas ou que Visual Studio ne parvient pas à s’attacher à votre site, consultez Résolution des problèmes du débogage distant Azure.If you do not see the Attach Debugger (Python) command or Visual Studio fails to attach to your site, see Troubleshooting Azure remote debugging.

Si l’attachement réussit, Visual Studio bascule vers une vue du débogueur.If the attach is successful, Visual Studio switches to a debugger view. La barre d’outils indique le processus en cours de débogage tel qu’un URI wss:// :The toolbar indicates the process being debugged such as a wss:// URI:

Débogage d’un site web Azure App Service

Une fois l’attachement effectué, l’expérience de débogage est globalement identique à celle du débogage à distance standard soumis à quelques contraintes.Once attached, the debugging experience is mostly the same as for regular remote debugging subject to a few constraints. En particulier, le serveur web IIS qui gère les demandes entrantes et les délègue au code Python par le biais de FastCGI présente un délai d’expiration de 90 secondes par défaut pour le traitement des demandes.In particular, the IIS web server that handles incoming requests and delegates them to Python code via FastCGI has a timeout for request handling, which defaults to 90 seconds. Si le traitement d’une demande dépasse ce délai (par exemple, en raison de la suspension du processus au niveau d’un point d’arrêt), IIS termine le processus, ce qui met fin à votre session de débogage.If request handling takes longer than that timeout (for example, because of the process being paused at a breakpoint), IIS terminates the process, ending your debugging session.

Attachement sans l’Explorateur de serveursAttaching without Server Explorer

Pour attacher le débogueur directement à App Service, suivez les instructions fournies sur la page d’informations du proxy WebSocket que Visual Studio déploie sur votre site à l’adresse <site_url>/ptvsd, par exemple ptvsdemo.azurewebsites.net/ptvsd.To attach the debugger directly to App Service, follow the instructions given on the WebSocket proxy info page that Visual Studio deploys to your site at <site_url>/ptvsd such as ptvsdemo.azurewebsites.net/ptvsd. La consultation de cette page vous permet également de vérifier que le proxy est correctement configuré :Visiting this page also verifies that the proxy is correctly configured:

Page d’informations du proxy de débogage à distance Azure

Comme indiqué, construisez une URL avec le secret de web.debug.config, qui est régénéré chaque fois que votre projet est publié.As instructed, construct a URL using the secret from web.debug.config, which is regenerated every time your project is published. Ce fichier est masqué par défaut dans l’Explorateur de solutions et ne figure pas dans votre projet. Vous devez donc afficher tous les fichiers ou ouvrir ce fichier dans un éditeur distinct.This file is hidden by default in Solution Explorer and not included in your project, so show all files or open it in a separate editor. Après avoir ouvert le fichier, examinez la valeur de l’élément appSetting nommé WSGI_PTVSD_SECRET :Once you've opened the file, look at the value of the appSetting named WSGI_PTVSD_SECRET:

Détermination du point de terminaison du débogueur dans un Azure App Service

L’URL dont vous avez désormais besoin se présente sous la forme de la chaîne wss://<secret>@<site_name>.azurewebsites.net/ptvsd, dans laquelle vous devez remplacer <secret> et <nom_site> par vos propres valeurs.The URL you now need is in the form wss://<secret>@<site_name>.azurewebsites.net/ptvsd where you replace <secret>and <site_name> in the string with your specific values.

Pour attacher le débogueur, sélectionnez Débogage > Attacher au processus, sélectionnez Python remote debugging (Débogage à distance Python) dans la zone déroulante Transport, entrez l’URL dans la zone de texte Qualificateur, puis appuyez sur Entrée.To attach the debugger, select Debug > Attach to Process, select Python remote debugging in the Transport dropdown, enter the URL into the Qualifier textbox, and press Enter. Si Visual Studio parvient à se connecter à App Service, il affiche un seul processus Python dans la liste.If Visual Studio can successfully connect to App Service, it shows a single Python process in the list. Sélectionnez-le, puis sélectionnez Attacher pour commencer le débogage :Select it and then Attach to start debugging:

Utilisation de la boîte de dialogue Attacher au processus pour l’attachement à un site web Azure