首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Azure函数中使用Python 3

在Azure函数中使用Python 3
EN

Stack Overflow用户
提问于 2017-11-09 17:41:32
回答 1查看 6.9K关注 0票数 9

我的目标是让一些Python 3代码作为Azure函数运行,但我无法让Python 3工作(我意识到Azure函数中的python支持仍然是实验性的)。

这是我试过的。

  1. 创建一个新的函数应用程序-我已经给它起了一个名字,其他的东西都是默认的。
  2. 使用以下代码创建了Python函数: 导入sys导入os response =open(os.environ‘’res‘,'w') response.write(sys.version) response.close()

运行此函数将像预期的那样提供"2.7.8 (default, Jun 30 2014, 16:03:49) [MSC v.1500 32 bit (Intel)]"的输出,因为2.7.8是安装在Azure函数环境中的python的默认版本。

  1. 然后,我使用Kudu将可嵌入的python3.6.1版本上传到d:\site\tools,如这个Azure wiki页面所述

当我再次运行这个函数时,我得到了输出"3.6.1 (v3.6.1:69c0db5, Mar 21 2017, 17:54:52) [MSC v.1900 32 bit (Intel)]" --所以这里一切都很好。

但是,如果我重新启动函数应用程序(或者只是让它单独运行一段时间,这样它就会被关闭),那么一切都会中断。运行该函数将提供:

代码语言:javascript
复制
{
  "id": "dd7c4462-0d73-49e0-8779-67b15a9bba82",
  "requestId": "ff553805-501d-4ea6-93f6-7bd6fa445a37",
  "statusCode": 500,
  "errorCode": 0,
  "message": "Exception while executing function: Functions.HttpTriggerPython31 -> "
}

日志显示:

代码语言:javascript
复制
2017-11-09T17:37:04.988 Function started (Id=941e5bef-e5e0-4604-8533-dd2a5fcaddf0)
2017-11-09T17:37:05.348 Exception while executing function: Functions.HttpTriggerPython31. Microsoft.Azure.WebJobs.Script: .
2017-11-09T17:37:05.364 Function completed (Failure, Id=941e5bef-e5e0-4604-8533-dd2a5fcaddf0, Duration=363ms)

如果我从d:\site\tools中删除python文件,那么函数将重新开始工作,但将运行v2.7.8。

但是,我可以让python 3.x从Kudu控制台运行:

代码语言:javascript
复制
D:\home\site\tools>python -c "import sys;print(sys.version)"
3.6.3 (v3.6.3:2c5fed8, Oct  3 2017, 17:26:49) [MSC v.1900 32 bit (Intel)]

还有其他人在Azure函数中成功运行Python 3吗?我该怎么做才能让它起作用?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-11-10 00:22:53

目前有一个悬而未决的问题:

但作为一种解决办法,一切都是解释这里 (全部归功于作者:木拉提·埃肯)。

  1. 创建你的功能。
  2. 安装带有可选Python版本的站点扩展,并配置处理程序映射以使用默认安装。 2.1。转到“平台特性>所有设置>扩展>+添加 2.2。安装“Python3.6.2 x86”扩展。 2.3。转到“平台特性”>应用程序设置 2.4。添加处理程序映射: 扩展: fastCgi 处理器: D:\home\python362x86\python.exe 论据: D:\home\python362x86\wfastcgi.py

2.5添加一个名为WEBSITE_USE_PLACEHOLDER的应用程序设置,并将其值设置为0。这是围绕Azure函数问题,该问题导致函数应用程序卸载后Python扩展停止工作工作所必需的。

2.6。保存应用程序设置。

这是我的函数"3.6.2 (v3.6.2:5fd33b5, Jul 8 2017, 04:14:34) [MSC v.1900 32 bit (Intel)]"的输出

您可以使用ARM模板自动执行这些步骤,下面是模板中有趣的部分:

代码语言:javascript
复制
{
  "$schema": "http://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json",
  "contentVersion": "1.0.0.0",
  "parameters": {
    //...
  },
  "variables": {
    // ...
  },
  "resources": [
    // ...
    {
      "type": "Microsoft.Web/sites",
      // ...
      "kind": "functionapp",
      "properties": {
        // ...
        "siteConfig": {
          "handlerMappings": [{
            "arguments": "D:\\home\\python362x86\\wfastcgi.py",
            "extension": "fastCgi",
            "scriptProcessor": "D:\\home\\python362x86\\python.exe"
          }]
          // ...
        },
        "resources": [{
          "name": "python362x86",
          "type": "siteextensions",
          "apiVersion": "2016-08-01",
          "properties": {}
          // ...
        }]
        // ...
      }
    }
  ]
}
票数 11
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47208325

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档