我在尝试使用 vercel.json 文件将 Flask 应用程序部署到 Vercel 时遇到问题。我的应用程序由一个 main.py 文件组成,应用程序在其中初始化。然后,该文件调用一个名为 ScraperAPI 的模块,该模块负责创建并运行我的 Flask 应用程序。此外,还会调用另一个名为 ProcessSearcher 的模块,该模块根据通过 POST 请求传递的名称字段在网站上执行 Web 抓取。
但是,Vercel 无法找到这两个模块,导致应用程序崩溃。我已经尝试将所有内容合并到一个文件中进行部署,但遇到了与处理程序和 Flask.app 无法访问相关的错误。
{
"rewrites": [
{
"source": "/(.*)",
"destination": "/api/main.py"
}
]
}
剩余的代码可以在存储库中找到,因为将其全部包含在此处会很麻烦。
https://github.com/pedroblome/web_scrapping
任何具有使用附加“.py”文件为简单 Flask 应用程序配置 Vercel 的经验的人都会给我很大帮助。他们的专业知识和指导对于有效解决这个问题非常宝贵。
我创建了一个 vercel.json 文件,指定我的应用程序以 ./api/main.py 开头,所有路由都应重定向到它。
根据我看过的教程,没有必要在 vercel.json 文件中显式列出应用程序中使用的所有 .py 文件。
代码错误:
Installing required dependencies...
构建@vercel/python:main.py [20s] 文件“main.py”中缺少变量
或handler
。 请参阅文档:https://vercel.com/docs/functions/serverless-functions/runtimes/python LambdaError:RequestId:23919ddb-5802-4485-8abc-73129e3018fa 进程在完成请求之前退出 在拉姆达。 (/usr/local/lib/node_modules/vercel/node_modules/@vercel/fun/dist/src/index.js:110:27) 在 Generator.next() 处 已完成(/usr/local/lib/node_modules/vercel/node_modules/@vercel/fun/dist/src/index.js:24:58) 在 process.processTicksAndRejections (节点:内部/进程/task_queues:95:5) 文件“main.py”中缺少变量app
或handler
。 请参阅文档:https://vercel.com/docs/functions/serverless-functions/runtimes/python LambdaError:RequestId:45e949fe-a712-4662-9ddd-cc37e4786099 进程在完成请求之前退出 在拉姆达。 (/usr/local/lib/node_modules/vercel/node_modules/@vercel/fun/dist/src/index.js:110:27) 在 Generator.next() 处 已完成(/usr/local/lib/node_modules/vercel/node_modules/@vercel/fun/dist/src/index.js:24:58) 在 process.processTicksAndRejections (节点:内部/进程/task_queues:95:5)app
我对处理程序遇到了同样的问题,并使用错误中提供的链接中提到的提示解决了它,this one,通过添加处理程序。
从http.server导入BaseHTTPRequestHandler
class handler(BaseHTTPRequestHandler):
def do_GET(self):
self.send_response(200)
self.send_header('Content-type','text/plain')
self.end_headers()
self.wfile.write('Hello, world!'.encode('utf-8'))
return
我也找不到 Flask 模块。通过在requirements.txt文件中设置版本解决了这个问题,如here所示。
Flask==3.0.3