【问题标题】:Azure functions Python code fails only when deployedAzure 函数 Python 代码仅在部署时失败
【发布时间】:2021-03-04 17:55:41
【问题描述】:

我已经为 azure 函数编写了一些 Python 代码,当我通过 Azure Functions Core Tools 在 VS 代码中本地执行它时,一切正常。代码调用 REST API。

当我将它部署到 azure 时,它​​失败并出现以下错误,关于如何调试它的任何想法?

Result: Failure Exception: SSLError: HTTPSConnectionPool(host='api.myurl.net', port=443): Max retries exceeded with url: /payments/123456 (Caused by SSLError(SSLError(1, '[SSL: TLSV1_ALERT_PROTOCOL_VERSION] tlsv1 alert protocol version (_ssl.c:1125)'))) Stack: File "/azure-functions-host/workers/python/3.8/LINUX/X64/azure_functions_worker/dispatcher.py", line 355, in _handle__invocation_request call_result = await self._loop.run_in_executor( File "/usr/local/lib/python3.8/concurrent/futures/thread.py", line 57, in run result = self.fn(*self.args, **self.kwargs) File "/azure-functions-host/workers/python/3.8/LINUX/X64/azure_functions_worker/dispatcher.py", line 542, in __run_sync_func return func(**params) File "/home/site/wwwroot/HttpTrigger1/__init__.py", line 15, in main status, body, headers = client.get('/payments/234368493',raw=True) File "/home/site/wwwroot/.python_packages/lib/site-packages/quickpay_api_client/api.py", line 80, in perform response = self.fulfill(method, url, File "/home/site/wwwroot/.python_packages/lib/site-packages/quickpay_api_client/api.py", line 44, in fulfill return getattr(self.session, method)(*args, **kwargs) File "/home/site/wwwroot/.python_packages/lib/site-packages/requests/sessions.py", line 555, in get return self.request('GET', url, **kwargs) File "/home/site/wwwroot/.python_packages/lib/site-packages/requests/sessions.py", line 542, in request resp = self.send(prep, **send_kwargs) File "/home/site/wwwroot/.python_packages/lib/site-packages/requests/sessions.py", line 655, in send r = adapter.send(request, **kwargs) File "/home/site/wwwroot/.python_packages/lib/site-packages/requests/adapters.py", line 514, in send raise SSLError(e, request=request)

【问题讨论】:

  • 您可以将错误日志或代码 sn-ps 用“```”引号括起来,以获得更好的可见性。只是一个提示。
  • 我已经这样做了:-)
  • 当你添加“```”时,你应该在新行中添加代码部分,而不是在同一行的引号旁边。但这实际上看起来更好,因为代码 sn-p 格式化将使文本成为单行且很长,而不是每个不同堆栈跟踪的新行。所以你更好。
  • 啊,现在好点了吗?
  • 好多了。 :-)

标签: python azure-functions


【解决方案1】:

问题出在已安装的 python 模块之一的代码中。该模块使用了 poolmanager ,我怀疑问题出在于此。我重写了代码,现在它可以工作了。

【讨论】:

    【解决方案2】:

    您的问题是由于您的证书不可信造成的,您可以尝试使用以下方法解决。

    1.您可以参考SSLError (bad handshake) when using Azure CLI获取信任证书,您可以通过浏览器中的错误信息中提到的URL获取信任证书。

    2.您可以尝试禁用证书验证,请参考SSL handshake error with some Azure CLI commands

    set ADAL_PYTHON_SSL_NO_VERIFY=1
    set AZURE_CLI_DISABLE_CONNECTION_VERIFICATION=1
    

    【讨论】:

    • 所以只是为了我的理解。我的 Python 代码对 api.quickpay,net 进行了 REST 调用,但我的 Azure 函数不信任该证书?这是没有意义的,因为它不是自签名证书。
    猜你喜欢
    • 1970-01-01
    • 2016-07-10
    • 1970-01-01
    • 1970-01-01
    • 2020-01-06
    • 1970-01-01
    • 2022-09-30
    • 2016-09-29
    相关资源
    最近更新 更多