Mic*_*ele 2 python google-cloud-platform google-cloud-functions
我尝试从终端使用 gcloud 进行部署,并通过 UI 进行了尝试,但在部署日志中的部署(构建工作)期间出现了相同的错误:
错误:函数终止。推荐操作:检查日志以了解终止原因。函数无法初始化。
gcloud 告诉我以下内容:
错误:(gcloud.functions.deploy)OperationError:代码=13,消息=由于运行状况检查失败,函数部署失败。这通常表示您的代码已成功构建但在测试执行期间失败。检查日志以确定原因。如果它看起来是暂时的,请在几分钟后再次尝试部署。
所以,我去了日志,什么都没有,nada,nisba。不是一条线。尝试将 RAM 增加到 2GB,尝试将与 main.py 处于同一级别的 .py 文件打包到根目录之外,但没有运气。显然,如果我在本地从测试脚本调用 main.py 中的处理程序函数,在 virtualenv (py37) 中使用来自 requirements.txt 的包运行它,它就可以工作。使用函数框架在本地运行它?有用。
以下是我目前调用 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
Run Code Online (Sandbox Code Playgroud)
目前 GCF 受此问题影响:
由于外部 aiohttp/yarl 依赖中断,GCF Python37 函数部署失败
一些客户报告 Python3.7 / Python3.8 云函数部署失败,并显示以下错误消息:
Python3.7 运行时:加载用户代码时函数失败。
" 由于运行状况检查失败,函数部署失败。这通常表明您的代码已成功构建,但在测试执行期间失败。检查日志以确定原因。如果它看起来是暂时的,请在几分钟后再次尝试部署。“
客户(用户)项目的 Stackdriver 日志中没有可见错误,但在内部,我们确实收到了针对包含其中一个依赖项的函数 Python37 运行时环境库的堆栈跟踪。
在我们的 GCF Python37 运行时中使用的 aiohttp 库使用了 yarl 依赖项,此问题的根本原因是 yarl 库的错误版本)
在发布短期修复之前可用的解决方法:
在 Python37 源代码的 requirements.txt 文件中明确固定 yarl 依赖项的版本,例如
# requirements.txt
yarl==1.4.2
Run Code Online (Sandbox Code Playgroud)
另一种选择是使用 Python 3.8 beta 运行时(它使用更新/升级的构建过程,不需要保留预安装的包/库),因此这个问题在 Python 3.8 运行时不应该普遍存在:https://cloud .google.com/functions/docs/concepts/python-runtime