使用 vercel.json 在 vercel 中部署导入模块 Flask 应用程序时出错

问题描述 投票:0回答:1

我在尝试使用 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
app
。 请参阅文档: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”中缺少变量
handler
app
。 请参阅文档: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)

flask deployment vercel python-module
1个回答
0
投票

我对处理程序遇到了同样的问题,并使用错误中提供的链接中提到的提示解决了它,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
© www.soinside.com 2019 - 2024. All rights reserved.