使用 Python 在 Vercel 中将多个路由组合成一个无服务器函数?
Combine multiple routes into one serverless function in Vercel using Python?
我目前有一个带有 python api 后端的 Nextjs 应用程序。我遇到的问题 运行 是 Vercel 有 24 个无服务器函数的限制,他们似乎建议应该结合你的无服务器函数来“优化”你的函数并避免冷启动。
目前我有以下代码
from sanic import Sanic
from sanic.response import json
app = Sanic()
@app.route('/')
@app.route('/<path:path>')
async def index(request, path=""):
return json({'hello': path})
@app.route('/other_route')
async def other_route(request, path=""):
return json({'whatever': path})
然而,当我点击 api/other_route
时,我得到了 404。我知道我可以创建名为 other_route.py
的单独文件,但我想知道是否有一种方法可以在我的 index.py
避免创建另一个无服务器函数的路由。
您需要在项目根目录中创建一个 Vercel 配置 vercel.json
{
"routes": [{
"src": "/api/(.*)",
"dest": "api/index.py"
}]
}
这会将所有请求路由到 /
,这是 Sanic 实例。然后 Sanic 知道如何路由到处理程序。您还应该将 other_route
方法中的路径参数更改为 path="other_route"
我目前有一个带有 python api 后端的 Nextjs 应用程序。我遇到的问题 运行 是 Vercel 有 24 个无服务器函数的限制,他们似乎建议应该结合你的无服务器函数来“优化”你的函数并避免冷启动。
目前我有以下代码
from sanic import Sanic
from sanic.response import json
app = Sanic()
@app.route('/')
@app.route('/<path:path>')
async def index(request, path=""):
return json({'hello': path})
@app.route('/other_route')
async def other_route(request, path=""):
return json({'whatever': path})
然而,当我点击 api/other_route
时,我得到了 404。我知道我可以创建名为 other_route.py
的单独文件,但我想知道是否有一种方法可以在我的 index.py
避免创建另一个无服务器函数的路由。
您需要在项目根目录中创建一个 Vercel 配置 vercel.json
{
"routes": [{
"src": "/api/(.*)",
"dest": "api/index.py"
}]
}
这会将所有请求路由到 /
,这是 Sanic 实例。然后 Sanic 知道如何路由到处理程序。您还应该将 other_route
方法中的路径参数更改为 path="other_route"