python - 部署到 Google Cloud 功能:错误消息:'main'
问题描述
我将 Python 应用程序部署到 Google Cloud Functions 并收到以下非常模糊的错误消息:
$ gcloud functions deploy parking_photo --runtime python37 --trigger-http
Deploying function (may take a while - up to 2 minutes)...failed.
ERROR: (gcloud.functions.deploy) OperationError: code=3, message=Function failed on loading user code. Error message: 'main'
我不知道出了什么问题。四处寻找没有结果。任何人都可以帮忙吗?
我相信我的代码布局是正确的:
$ tree
.
├── main.py
├── poetry.lock
├── pyproject.toml
├── README.rst
├── requirements.txt
└── tests
├── __init__.py
└── test_burrowingowl.py
我的main.py
文件有一个与函数名称匹配的函数:
import operator
from datetime import datetime
import logbook
from flask import Request, abort, redirect
from pydantic import ValidationError
from pydantic.dataclasses import dataclass
from google.cloud import storage
from pytz import timezone
logger = logbook.Logger(__name__)
storage_client = storage.Client()
@dataclass
class Form:
bucket: str = ...
parkinglot: str = ...
space_id: int = ...
tz: str = ...
def parking_photo(request: Request):
# Some code
return
更新
谢谢你的回答。当我有一段时间没有收到来自 StackOverflow 的通知时,这个话题不在我的视线范围内。
去年,我通过放弃使用dataclass
. 当时谷歌声称支持 Python 3.7 但实际上不支持,这就是为什么dataclass
没有工作。
当您尝试重现此问题时,可能 Google 已经修复了 Python 3.7 兼容性。
解决方案
您的函数很可能引发FileNotFound
错误,而 Cloud Functions 将其解释为main.py
不存在。将导致相同错误的最小示例:
$ cat main.py
with open('missing.file'):
pass
def test(request):
return 'Hello World!'
您应该检查以确保您尝试打开的任何文件都包含在您的函数中。您可以try
/except
为此错误并记录一条消息以找出它。
推荐阅读
- javascript - 如何在 Python Flask + React Native 应用程序中获取用户输入?
- javascript - HTML:是否可以在按钮内放置自主复选框?
- python - @pyqtslot 返回值未定义
- sql - 在 Redshift 中撤销不处理外部架构
- c++ - 有人可以在从函数返回数组时解释输出的行为吗?
- java - How to bind a Gluon View with spring boot controller?
- css - CSS: Changing background color of parent label when the input checkbox is checked?
- python - Expand a column of lists into multiple rows in Pandas
- gitlab - /bin/sh: eval: line 98: bash: not found
- r - How do I handle legend boxes with tmap library?