【问题标题】:How can I call a python script from an asp.net Azure app service?如何从 asp.net Azure 应用服务调用 python 脚本?
【发布时间】:2019-01-04 11:07:38
【问题描述】:

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

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

我看到的两个选项是:

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

【问题讨论】:

  • 如果python脚本简单,可以考虑azure自动化python runbook
  • 我会调查的。虽然脚本很简单,但它需要使用的库绝对不简单。如果它不能导入高级库,它将无法工作。这也是我不能使用 IronPython 的原因。
  • 好的,如果在运行手册中有任何问题,您可以告诉我。祝你好运:)
  • 看起来这真的只适用于 Azure 自动化,这不是我要解决的问题,也不能作为按需服务 (SaaS) 工作。

标签: python asp.net azure


【解决方案1】:

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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-05-02
    • 2020-12-09
    • 2023-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-27
    相关资源
    最近更新 更多