带有存储触发器的谷歌云函数python37不会部署,也不会提供任何日志



我尝试从终端使用gcloud进行部署,并尝试通过UI进行部署,在部署日志:中的部署(构建工作(过程中出现了相同的错误

错误:函数已终止。建议操作:检查日志是否存在终止原因。无法初始化函数。

并且gcloud告诉我以下内容:

错误:(gcloud.functions.deploy(OperationError:代码=13,消息=由于运行状况检查失败,函数部署失败。这通常表示您的代码已成功生成,但在测试执行过程中失败。检查日志以确定原因。如果出现瞬态,请在几分钟后尝试再次部署。

所以,我去日志什么都没有,nada,nisba。没有一句台词。尝试将RAM增加到2GB,尝试将位于main.py同一级别的.py文件打包出根目录,但没有成功。显然,如果我在本地从测试脚本调用main.py中的处理程序函数,并在带有requirements.txt中的包的virtualenv(py37(中运行它,它就可以工作了。使用函数框架在本地运行它?它有效。

以下是我目前调用gcloud进行部署的方式:

gcloud functions deploy load_to_bigquery 
--project=project-platform-dev 
--region europe-west1 
--runtime python37 
--memory 1024MB 
--entry-point handler 
--env-vars-file .env.dev.yaml 
--trigger-resource the-source-bucket 
--trigger-event google.storage.object.finalize

当前GCF受此问题影响:

GCF Python37功能部署因外部aiohttp/yarl依赖损坏而失败

一些客户报告了Python3.7/Python3.8云功能部署的功能失败,并出现以下错误消息:

Python3.7运行时:函数在加载用户代码时失败。

"由于运行状况检查失败,功能部署失败。这通常表示您的代码生成成功但失败在测试执行期间。检查日志以确定原因。尝试如果它看起来是瞬态的,几分钟后再次部署">

客户(用户(的Stackdriver日志中没有可见的错误然而,在内部,我们确实收到了针对问题包含函数Python37运行时环境库以及它的一个依赖项。

在我们的GCF Python37运行时中使用的aiohttp库使用yarl依赖性,而这个问题的根本原因是yarl图书馆(

在发布短期修复程序之前可用的解决方案:

  • 在requirements.txt文件,用于Python37源代码,如

    # requirements.txt
    yarl==1.4.2
    
  • 另一种选择是使用Python 3.8测试版运行时(使用不需要持有的更新/升级的生成过程安装到预安装的软件包/库中(,因此此问题应该在Python 3.8上不流行运行时:https://cloud.google.com/functions/docs/concepts/python-runtime

最新更新