我的目标是让一些Python 3代码作为Azure Function运行,但是我无法使Python 3正常工作(我意识到Azure Functions中的python支持仍处于试验阶段)。
这是我尝试过的。
创建一个新的Function App-我给它起了一个名字,其他都保留为默认设置。
使用以下代码创建了Python HttpTrigger函数:
import sys
import 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 Functions环境中安装的默认python版本。
"2.7.8 (default, Jun 30 2014, 16:03:49) [MSC v.1500 32 bit (Intel)]"
当我再次运行该函数时,我得到了输出"3.6.1 (v3.6.1:69c0db5, Mar 21 2017, 17:54:52) [MSC v.1900 32 bit (Intel)]"-一切都很好。
"3.6.1 (v3.6.1:69c0db5, Mar 21 2017, 17:54:52) [MSC v.1900 32 bit (Intel)]"
但是,如果我重新启动功能应用程序(或暂时搁置一段时间以使其关闭),那么一切都会中断。运行该函数可以得到:
{ "id": "dd7c4462-0d73-49e0-8779-67b15a9bba82", "requestId": "ff553805-501d-4ea6-93f6-7bd6fa445a37", "statusCode": 500, "errorCode": 0, "message": "Exception while executing function: Functions.HttpTriggerPython31 -> " }
日志显示:
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控制台运行:
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 Functions中成功运行了Python 3?我需要怎么做才能使其正常工作?
目前有一个未解决的问题:
但是,作为一种变通办法,所有内容都在这里进行了解释(作者所有版权:Murat Eken)
2.1。转到“平台功能>所有设置>扩展> +添加
2.2。安装“ Python 3.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)]"
"3.6.2 (v3.6.2:5fd33b5, Jul 8 2017, 04:14:34) [MSC v.1900 32 bit (Intel)]"
您可以使用ARM模板自动化这些步骤,这是模板中有趣的部分:
{ "$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": {} // ... }] // ... } } ] }