我创建了一个简单的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