我正在尝试创建一个简单的Azure函数,以检查给定的URL是否可用(这只是概念证明)。我的问题是我无法弄清楚我需要导入哪个库来获取该客户端类。Azure文档一点也不清晰,所有示例都是C#或.NET
import logging
import azure.functions as func
def main(req: func.HttpRequest) -> func.HttpResponse:
logging.info('Python HTTP trigger function processed a request.')
target = req.params.get('target')
if not target:
try:
req_body = req.get_json()
except ValueError:
pass
else:
target = req_body.get('target')
if target:
try:
MyClient = HttpClient()
response = MyClient.GetAsync(f"http://{target}")
except:
return func.HttpResponse("Error", status_code = 500)
if response.StatusCode == 200 or response.StatusCode == 302:
return func.HttpResponse("OK")
else:
return func.HttpResponse("Bad", status_code = 503)
else:
return func.HttpResponse(
"No target specified",
status_code=400
)
Requirements.txt:
azure-functions==1.2.1
altgraph==0.17
future==0.18.2
pefile==2019.4.18
PyInstaller==3.6
pywin32-ctypes==0.2.0
PyYAML==5.3.1
requests==2.24.0
为此,您可以requests
通过在VS代码的“终端”窗口中运行以下命令,将其安装在python函数中。
pip install requests
然后将其导入并按以下方式使用(只需检查中status_code
的response
):
更新:
根据一些测试,我重现了您的问题。看来您没有requests
在azure上成功安装模块,只是将其安装在本地的函数中。请参考以下步骤:
1.我假设您已requests
在本地安装模块并在本地运行成功的功能(如果仍有问题,请告诉我)。然后,请在VS代码的“终端”窗口中运行以下命令,以生成“ requirements.txt”。
pip freeze > requirements.txt
“ requirements.txt”用于安装模块,将功能部署到azure时,azure将根据“ requirements.txt”中的内容安装模块。运行上面的命令以生成“ requirements.txt”后,您可以看到如下所示:
您的函数显示500错误(“此页面无法运行”)的原因是“ requirements.txt”中缺少“ requests”。
2.然后在“终端”窗口中运行命令以将功能从本地部署到天蓝色。
func azure functionapp publish <functionAppName> --build remote
该<functionAppName>
是你在Azure门户创建功能的应用程序(蟒蛇)的名称。
3.之后,转到Azure门户测试您的功能,它将正常工作。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句