在 Azure 中,我可以从我的 C# WebJob 调用 Python 脚本吗?

In Azure, can I call a Python script from my C# WebJob?

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

例如,请参阅此

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

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

  • 创建一个 python 网络作业(手动、触发)(see tutorial)

  • 创建一个 C# web 作业。

  • 从 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 门户的工作属性中找到工作凭证:

当然,可以通过您链接的 之后的 C# WebJob 调用 Python 3 脚本。首先,你需要安装一个Python 3 运行时间如下。

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

希望对您有所帮助。


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

  1. 访问 url 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