Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/349.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从asp.net Azure应用程序服务调用python脚本?_Python_Asp.net_Azure - Fatal编程技术网

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

如何从asp.net Azure应用程序服务调用python脚本?,python,asp.net,azure,Python,Asp.net,Azure,我在Azure上拥有一个现有的.NET核心/asp.NET应用程序服务。我需要(按需)调用一个python脚本来返回基于自定义用户输入的数据 我似乎不能使用IronPython,因为我需要在CPython中构建的python模块,不幸的是IronPython不支持这些模块 我看到的两个选择是: 我可能能够在应用程序服务上安装正确的python版本和库,并从.NET代码调用它。这似乎是不推荐的: 我可以为python脚本创建一个全新的独立应用程序服务,并从.NET应用程序服务中按需调用RESTA

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

我似乎不能使用IronPython,因为我需要在CPython中构建的python模块,不幸的是IronPython不支持这些模块

我看到的两个选择是:

  • 我可能能够在应用程序服务上安装正确的python版本和库,并从.NET代码调用它。这似乎是不推荐的:

  • 我可以为python脚本创建一个全新的独立应用程序服务,并从.NET应用程序服务中按需调用RESTAPI。这似乎有些过分,并引入了公开开放一个全新服务的问题,这是我不想做的。这似乎还有一个局限性,即Flask不适合生产,因此一次承载多个调用实际上是不可行的


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

根据我的经验,有两种方法可以在没有IronPython的情况下调用C#中的python脚本

  • 直接使用C#中的
    System.Diagnostics.Process
    ,运行与SO线程相同的命令,通过解析流程标准输出的内容获得结果。简单地说,您可以使用将Python脚本包装为
    .exe
    文件,以避免在Azure应用程序服务上安装Python模块和设置环境变量。然而,考虑到并发性,这并不是一个提高性能的好主意

  • 正如您所说的第二个选项是在Azure Web App的同一个实例中部署Python脚本作为REST API。您可以跟随博客,通过Visual Studio将带有Python脚本的flask应用程序作为子项目部署,以公开API url,如
    https://.azurewebsites.net/pyapi
    可通过
    HttpClient
    从ASP.NET调用。我尝试过这个解决方案,它是有效的


  • 注意:由于Azure Web App sandbox的限制,您必须使用
    .azurewebsites.net
    作为主机名,而不是
    localhost
    127.0.0.1

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

  • 直接使用C#中的
    System.Diagnostics.Process
    ,运行与SO线程相同的命令,通过解析流程标准输出的内容获得结果。简单地说,您可以使用将Python脚本包装为
    .exe
    文件,以避免在Azure应用程序服务上安装Python模块和设置环境变量。然而,考虑到并发性,这并不是一个提高性能的好主意

  • 正如您所说的第二个选项是在Azure Web App的同一个实例中部署Python脚本作为REST API。您可以跟随博客,通过Visual Studio将带有Python脚本的flask应用程序作为子项目部署,以公开API url,如
    https://.azurewebsites.net/pyapi
    可通过
    HttpClient
    从ASP.NET调用。我尝试过这个解决方案,它是有效的


  • 注释:由于Azure Web应用程序沙箱的限制,您必须使用<代码> .AzuryStudio.NET/COD>作为主机名,既不<代码>本地主机或<代码> 127.0.0.1 .< /P>如果Python脚本简单,您可以考虑Azure自动化。虽然脚本很简单,但它需要使用的库肯定不简单。如果它不能导入高级库,它将无法工作。这也是我不能使用IronPython的原因。好的,如果在运行手册中有任何问题,你可以告诉我。幸运的是:看起来这确实是Azure自动化的,这不是我正在试图解决的问题,也不会作为点播服务(SaaS)工作。如果Python脚本很简单,你可以考虑Azure自动化。虽然脚本很简单,但它需要使用的库肯定不简单。如果它不能导入高级库,它将无法工作。这也是我不能使用IronPython的原因。好的,如果在运行手册中有任何问题,你可以告诉我。祝你好运:)看起来这只适用于Azure automation,这不是我试图解决的问题,也不会作为一种按需服务(SaaS)工作。