【发布时间】:2019-11-04 16:27:51
【问题描述】:
我正在尝试使用内联编辑器重新部署以前工作的 Python 云函数。在源或 requirements.txt 没有更改的情况下,部署失败并显示以下错误消息:
Deployment failure:
Function failed on loading user code. Error message: Error: cannot communicate with function.
功能日志提供以下详细信息:
{
insertId: "-xueafgcygm"
logName: "projects/xxx/logs/cloudaudit.googleapis.com%2Factivity"
operation: {
id: "operations/YXBvdGV4MzYwL3VzLWNlbnRyYWwxL2RvTG9hZEFwb3RleDM2MFByb2R1Y3QvSHhiWWlvVHVmdkE"
last: true
producer: "cloudfunctions.googleapis.com"
}
protoPayload: {
@type: "type.googleapis.com/google.cloud.audit.AuditLog"
authenticationInfo: {
principalEmail: "xxx@gmail.com"
}
methodName: "google.cloud.functions.v1.CloudFunctionsService.UpdateFunction"
requestMetadata: {
destinationAttributes: {
}
requestAttributes: {
}
}
resourceName: "projects/xxx/locations/us-central1/functions/doLoadProduct"
serviceName: "cloudfunctions.googleapis.com"
status: {
code: 3
message: "INVALID_ARGUMENT"
}
}
receiveTimestamp: "2019-11-04T16:17:00.108301794Z"
resource: {
labels: {
function_name: "doLoadProduct"
project_id: "xxx"
region: "us-central1"
}
type: "cloud_function"
}
severity: "ERROR"
timestamp: "2019-11-04T16:16:59.612Z"
}
这从上周五开始,一直持续到今天。我还尝试使用 gcloud 函数 deploy 进行本地部署,但我收到了类似的错误消息:
ERROR: (gcloud.functions.deploy) OperationError: code=3, message=Function failed on loading user code. Error message: Error: cannot communicate with function.
我希望为解决此问题的后续步骤提供一些指导。
--- 更新---
根据 Dustin 提供源文件和需求文件的建议,我努力查看是否可以用尽可能少的代码重新创建问题。
main.py
import base64
import mysql.connector as db
from google.cloud import storage
def hello_pubsub(event, context):
pubsub_message = base64.b64decode(event['data']).decode('utf-8')
print(pubsub_message)
requirements.txt
google-cloud-storage==1.21.0
mysql-connector-python==8.0.18
原来google-cloud-storage的版本不兼容。改成mysql-connector-phthon
所以问题解决了。
【问题讨论】:
-
你能把你的函数和
requirements.txt包括进来吗? -
Cloud Functions 服务帐户是否有任何更改?这可能是暂时性错误。几个小时后重试。
标签: python-3.x google-cloud-platform google-cloud-functions