python-3.x - Cloud Run 请求触发错误 400 未到达已部署的服务
问题描述
我目前正在使用Google Cloud Run部署 API,尽管一切正常,但我现在很难理解我遇到的错误。
我使用FastAPI在 python3 上创建了 API ,Location 模型基于Pydantic 的BaseModel。
为了说明这一点,我定义了一个测试路线如下:
class Location(BaseModel):
lat: float
lng: float
@router.get('/test_404')
async def test_404(origin: Location = Body(...),
destination: Location = Body(...)):
print(origin)
print(destination)
return {'res': 'ok'}
该路由应在请求的正文中采用两个参数:起点和终点,但仅当我在本地部署时才这样做。这个 :
url_local = "http://0.0.0.0:8080/test_404"
data = {
'origin': {'lat': 104, 'lng': 342},
'destination': {'lat': 104, 'lng': 342}
}
resp = requests.get(url_local, json = data)
print(resp.text)
输出:
'{"res":"ok"}'
当我在 Cloud Run 上部署相同的服务时会出现问题。我的所有其他路线都可以正常工作,但这是我将上面的代码与容器 url 一起使用时得到的输出:
<!DOCTYPE html>\n
<html lang=en>
<meta charset=utf-8>
\n
<meta name=viewport content="initial-scale=1, minimum-scale=1, width=device-width">
\n <title>Error 400 (Bad Request)!!1</title>\n
\n <a href=//www.google.com/><span id=logo aria-label=Google></span></a>\n
<p><b>400.</b>
<ins>That’s an error.</ins>
\n
<p>Your client has issued a malformed or illegal request.
<ins>That’s all we know.</ins>
这是由 google 触发的错误,不会让我的请求到达服务(无日志条目)
我在网上搜索过,但没有找到导致此错误的原因。我错过了什么?
非常感谢
解决方案
推荐阅读
- python - 如何转换瞻博网络配置备份文件
- activemq-artemis - 如何更改 ActiveMQ Artemis 代理中的运行时日志记录
- php - 在 Magento 2 中以编程方式将产品添加到购物车
- python - 如何根据使用熊猫的条件重新调整一列数字
- xml - 在 Oracle 中从这个 XML 中提取价值的正确方法是什么?
- java - 如何使用 Java 跟踪从方法到方法的 Java 流
- regex - Bash grep 正则表达式包括减号作为字符集
- javascript - 日期在 JS 日期应用程序中未正确显示
- php - 如何在 PHP 中解析数组以填充 NULL 作为两个最接近值之间的平均值
- javascript - 如何使用 Momentjs 防止 Angular Material 6 DatePicker 转换不正确的格式?