【问题标题】:In Azure, can I call a Python script from my C# WebJob?在 Azure 中,我可以从我的 C# WebJob 调用 Python 脚本吗?
【发布时间】:2017-07-10 09:42:28
【问题描述】:

我想用 C# 创建一个 WebJob。不幸的是,我需要使用 Python 3 脚本,因为目前没有适合我需要使用 C# 执行的一项特定任务的库。

例如,请参阅此answer/example

是否可以让我的 WebJob 调用 Python 脚本?我可以将 Python3 脚本放在一个 blob 容器中 - 然后我可以从我的 C# WebJob 调用和执行它吗?

【问题讨论】:

    标签: c# python azure azure-webjobs


    【解决方案1】:

    当然,可以通过 C# WebJob 调用 Python 3 脚本,该脚本遵循您链接的 sample。首先,您需要安装 Python 3 运行时,如下所示。

    1. 通过urlhttps://<your webapp name>.scm.azurewebsites.net访问kudu工具,按照下图安装Python 3运行时。
    2. 比如安装Python 3.5.2 x86,会安装在D:\home\Python35的路径下,那么你只需要更改示例中的Python执行文件路径即可尝试运行。

    希望对你有帮助。


    更新:安装pip工具和其他Python包。

    1. 访问网址https://<your azure webapp name>.scm.azurewebsites.net/DebugConsole
    2. 命令如下。

      D:\home>cd Python35
      D:\home\Python35>curl https://bootstrap.pypa.io/get-pip.py --output get-pip.py
        % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                       Dload  Upload   Total   Spent    Left  Speed
      
      100 1558k  100 1558k    0     0  6829k      0 --:--:-- --:--:-- --:--:-- 7179k
      D:\home\Python35>python get-pip.py
      Requirement already up-to-date: pip in d:\home\python35\lib\site-packages
      Collecting wheel
        Downloading wheel-0.29.0-py2.py3-none-any.whl (66kB)
      Installing collected packages: wheel
      Successfully installed wheel-0.29.0
      
    3. 例如安装numpy

      D:\home\Python35>python get-pip.py numpy
      Collecting numpy
        Downloading numpy-1.13.1-cp35-none-win32.whl (6.8MB)
      Installing collected packages: numpy
      Successfully installed numpy-1.13.1
      

    【讨论】:

    • 谢谢!如果我的脚本正在使用其他 python 库(例如,该脚本使用 NetCDF4)怎么办?
    • @pookie 首先需要下载get-pip.py脚本文件,在python运行时路径下安装pip工具。然后,您可以使用Scripts/pip install <package name> 安装您需要的包。
    • 抱歉,我不太明白。我熟悉 pip 和安装包,但我不确定如何执行我的 Scripts/pip install <package name> 命令。我也不确定你所说的install pip tool in the python runtime path 是什么意思——get-pip.py 会为我这样做吗?例如,我无法通过 kudu 工具安装get-pip.py。我该怎么处理这个文件?
    • @pookie 我更新了关于如何安装 pip 并使用它来安装更多软件包的回复。
    • @PeterPan 你介意看看here吗?我认为路径设置不正确。
    【解决方案2】:

    不知道这是否是最好的方法,但这是我过去所做的:

    • 创建一个 python webjob(手动,触发)(see tutorial

    • 创建 C# 网络作业。

    • 从 C# 作业触发 Python 作业:

      using (var client = new HttpClient())
      {
          var username = "jobusername";
          var password = "jobpassword";
          var byteArray = Encoding.ASCII.GetBytes($"{username}:{password}");
          client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", Convert.ToBase64String(byteArray));
          var response = await client.PostAsync("joburl", null);
      }
      

    您可以从 azure 门户上的作业属性中找到作业凭据:

    【讨论】:

      猜你喜欢
      • 2020-01-09
      • 2022-01-08
      • 2011-04-09
      • 2012-01-14
      • 2015-06-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-17
      相关资源
      最近更新 更多