为什么我的烧瓶应用程序无法处理多个客户端?



我创建了一个简单的flask应用程序,它需要身份验证才能访问数据。

当我在本地运行这个应用程序时,它工作得很好(接受多个客户端),但是当我在railway或heroku上托管这个应用程序时,它不能处理多个客户端。

例如:当我在电脑上访问URL并登录时,如果我在手机上访问URL(不同的网络),我就可以访问登录的那个帐户。

我正在使用最新版本的flask,并使用flask_login来管理身份验证。

有人知道为什么会这样吗?

我已经尝试了我在网上找到的所有方法,比如使用

app.run(threaded=True)

我还在gunicorn命令中设置了工人的数量,例如

有人知道为什么会这样吗?

正如Flask的官方文档所说,永远不要在生产环境中以开发模式运行应用程序(app.run()实际上是什么)。

如果要在自托管机器上部署,请参考本节:https://flask.palletsprojects.com/en/2.2.x/deploying/

如果你要部署到Heroku,你需要准备正确的Procfile,像这样:

web: gunicorn run:app

我刚刚解决了。

我的gunicorn是同步的,一次只能处理一个请求。

所以我在prociple上插入线程数,以便将worker_class从sync更改为Gthread

My profile after:

web: gunicorn—threads 4:$PORT index:app

https://docs.gunicorn.org/en/stable/design.html choosing-a-worker-type

最新更新