如何从asp.net Azure应用服务调用python脚本?

时间:2019-01-01 10:11:01

标签: python asp.net azure

我在Azure上托管了一个现有的.NET Core / asp.net应用程序服务。我需要调用(按需)python脚本以基于自定义用户输入返回数据。

似乎无法使用IronPython,因为我需要CPython内置的python模块,不幸的是IronPython不支持这些模块。

我看到的两个选项是:

从Azure上的.NET应用服务按需调用python脚本的最佳方法是什么?

1 个答案:

答案 0 :(得分:0)

根据我的经验,有两种方法可以在不使用IronPython的情况下使用C#调用Python脚本。

  1. 在C#中直接使用System.Diagnostics.Process来运行与SO线程Run Command Prompt Commands相同的命令,以通过解析过程标准输出的内容来获取结果。只需执行此操作,就可以使用py2exe将Python脚本包装为.exe文件,以避免在Azure App Service上安装Python模块和设置环境变量。但是,考虑到并发性,这不是提高性能的好主意。

  2. 您所说的第二个选项是在同一Azure Web App实例中将Python脚本部署为REST API。您可以关注Deploying multiple virtual directories to a single Azure Website博客,通过带有PTVS的Visual Studio通过子项目部署带有Python脚本的flask应用程序作为子项目,以公开可以从ASP调用的API网址,例如https://<your web app name>.azurewebsites.net/pyapi。 .NET通过HttpClient。我尝试过这种解决方案,它可以工作。

注意:由于Local Address Requests的Azure Web App沙箱的限制,您必须使用<your web app name>.azurewebsites.net作为主机名,而不能同时使用localhost127.0.0.1