问题标签 [flask-session]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
2062 浏览

python - 如果它是具有空值的数据框和具有由下划线分隔的数字的列,如何在 Flask 应用程序中的应用程序路由之间传递对象?

我正在开发一个网络应用程序,用户将在其中上传一个 .csv 文件,该文件在下一页上呈现为 html。然后,需要在下一页上使用相同的 .csv 文件(或导入它的 pandas 数据框)。所以我需要在@app.routes 之间移动这个对象。我的理解是这session是在 Flask 中执行此操作的正确方法。但是,会话要求对象被序列化。

这很好,除了将 json 转换回 pandas 时,会删除下划线。显然这是因为它被视为_扮演逗号角色的数字对象,并且开发人员表示他们不打算为此提供修复程序

我做了一个简单的应用程序来演示这个问题:

控制器.py

控制台中的输出,从中可以看到下划线已被删除。

那么,有没有比简单地“在导入之前从我的数据中删除所有下划线”更好的解决方案?我可以这样做,但这会很痛苦,因为我已经编写的其他代码需要下划线的数据。

编辑:如果我在那里也有空值怎么办?我可以完全避免使用 json 吗?

0 投票
2 回答
1150 浏览

python - 会话对象上的 Flask 会话(文件系统)UnPicklingError,是否有大小限制或者我是否有损坏?

Python2.7 / Centos7.5 / Apache2.4.6 + mod_wsgi

我正在使用 flask/jinja 生成一些交互式 html 表单并将数据保存到更改之间的会话文件(flask_session / type=filesystem)。它在 werkzeug 的 contrib/cache.py 的 _prune 函数中随机出现 Unpickling 错误,我不知道为什么。删除会话文件将解决问题,直到它再次出现。我已经能够通过强制会话文件增大大小(使表单更长)来重现错误,所以我怀疑大小是相关的,但这并不能完全解释为什么它们首先发生. 我遇到的服务器端会话文件/泡菜是否有一些大小限制? 这不是完全可以预测的,我只知道当我开始超载时,它最终会发生。AFAIK 除了 jinja 渲染的 html 之外,没有任何东西被发送到客户端。

我加载一个体面的 OrderedDict 作为会话项目:

dict 的深度只有 3 个级别,当它冒着崩溃的风险时,总共有 ~ 300 个键。

我已经尝试更改会话项目阈值,更改会话文件的持久性,更新 werkzeug,并且我有一个解决方法,方法是在 UnpicklingError 上强制删除会话文件(这似乎不会影响客户端体验全部)。但这是对 werkzeug lib 文件的手动编辑,绝对不是长期解决方案。

相关的python代码(为了可读性而修剪和修改):

相关神社

为方便起见,来自 werkzeug/contrib/cache.py 的 _prune 函数

我不认为它是相关的,考虑到它应该都是服务器端的,但是在带有烧瓶开发服务器的 Windows 环境中运行相同的脚本不会出现酸洗错误。相反,我在 self.flush() 中收到套接字错误 - 已建立的连接被主机中的软件中止。也没有崩溃,它只是继续。我怀疑这只是错误处理,但认为值得一提。

0 投票
0 回答
1951 浏览

python-3.x - 如何使用 SQLAlchemy 配置 Flask-Session 以在服务器端存储 Flask 会话

我正在开发一个部署在 heroku 上的 Flask 应用程序。
该应用程序使用Flask-Session我需要帮助才能正确配置服务器端会话存储。

我首先将其配置为使用 Flask-Session configuration = "SESSION_FILE_DIR" = mkdtemp() 在服务器端存储会话。但是,在这种情况下,Heroku 不能以这种方式正常运行。Heroku 不会存储会话,用户只会随机注销。我已经看到将会话存储在数据库中而不是服务器临时文件夹中的建议。

我尝试使用“SESSION_TYPE”=“sqlalchemy”将会话转移到数据库存储。我还不能正确运行它以在 locahost 上运行。

按照这个如何在 Postgres 数据库中保存会话?也是,但没有成功...

原始会话配置 ->

我在主文件中导入的 class_h.py 模型文件,创建 db 实例,在 application.py 中初始化

Flask-SQLAlchemy 配置,Heroku Postgres 数据库

配置 flask_session 以使用 SQLAlchemy(而不是签名的 cookie)

在我对 session.py 文件应用 [此修复] ( https://github.com/mnbf9rca/flask-session/commit/9ad4b23e946beba1fdbd23dc406058a77dac6676 ) 后,会话记录不会在数据库中创建。如果未应用修复,则使用 None 值创建会话。

试过

但我得到相同的行为。

尝试过:

使用 Null 到期创建会话(而不是未创建)。

感谢您的帮助!花了几天时间研究这个。

0 投票
0 回答
554 浏览

python - 使用 google-oauth 丢失 Flask 服务器端会话

我有一个现有的烧瓶应用程序,它使用烧瓶会话来存储数据。我刚刚将 google oauth 集成到应用程序中,这很有效。将基本烧瓶会话更改为使用烧瓶会话进行服务器端会话后出现此问题(主要是因为会话需要超过 4kb 限制)。在这一点上,我得到了一个永无止境的重定向循环。

我正在使用 pycharm 在本地运行它。我在 google API 中创建了一个 clientID 和 secret,并添加了http://127.0.0.1:5000/oauth2callback作为授权的重定向 URL。我还添加了https://example.com/oauth2calback与本地 DNS 记录指向我正在部署它的服务器(通过 docker 容器)

在本地,一切似乎都可以正常工作,即使在实现服务器端会话时也是如此。但是,一旦我部署了它并输入https://example.com,在 google 身份验证之后,我就会陷入无限重定向循环。

在许多打印语句之后,在部署的代码中,我可以看到我的会话不再包含“凭据”密钥,因此我重定向回登录。我猜这与某处的 DNS 有关,因为它似乎在没有 DNS 的情况下工作(以某种方式通过 127.0.0.1),尽管我无法将私有 IP 添加到谷歌授权的重定向 URL 以进一步验证。

编辑:

我可以通过使用 cachelib 模块并初始化 SimpleCache()/FileSystemCache() 来解决这个问题。不是最好的解决方案,但它目前对我有用,直到我可以花更多时间来解决这个问题。

0 投票
2 回答
1615 浏览

socket.io - 无效会话/会话断开连接

导致 socket.io 会话崩溃并且服务器返回无效会话或会话断开连接的原因可能是什么?

0 投票
0 回答
557 浏览

python - 在 Docker 容器中设置 Flask Session 的权限

在为我正在构建的 Python Flask 应用程序构建和运行我的自定义 Docker 映像时,出现权限错误。:

PermissionError:[Errno 13] 权限被拒绝:'/project/flask_session'

我尝试为“项目”目录提供最大权限,以及不将包含的“项目”目录设置为卷。

我的图像是从以下 Dockerfile 生成的:

其他错误似乎表明缺少权限不允许生成文件夹“project/flask_session”。我正在使用一个名为 Flask Session 的框架,它在我的工作目录中生成 flask_session 文件夹,其中保存了会话的用户数据。提前感谢您的任何帮助或建议!

0 投票
1 回答
397 浏览

python-3.x - Flask 文件下载:文件名在会话中持续存在

我有一个烧瓶网站和一个生成 excel 文件的网络表单。我遇到的问题是,如果我将用户发送回表单再次提交,即使在 tmp 目录中生成了新文件,也会下载前一个文件(具有相同文件名和数据)。所以,我认为这与我的会话变量有关。

我使用此函数为文件名添加时间戳,以确保文件名是唯一的:

在 routes.py 中,这里是下载调用:

这是生成 excel 文件的脚本的代码:

模板页面的下载声明:

我有一个与简单 javascript 相关的“再次提交”按钮

我玩过session.clear()但没有成功。

当用户单击“再次提交”按钮以删除保存的文件名时,如何删除会话?

编辑:我检查了文件名和会话变量的变量,它们是相同的,并且与下载时分配的文件名不同。例如,我编写的脚本将该文件命名为“output_May0554733504.xlsx”——我可以在 tmp 目录中看到它。但是当我去下载文件时,文件名不同:'output_May0536794357.xlsx'

这个其他文件名不是 tmp 目录中其他文件的名称。我下载的任何文件都是“output_May0536794357.xlsx”。

0 投票
1 回答
307 浏览

python - 如何动态设置 Flask Session 超时?

在我的 Flask 应用程序中,我通常在代码开头设置会话超时:

我需要在登录后根据用户的权限设置超时。添加此代码以便我可以动态更改会话生存期变量的最佳位置在哪里?我在想也许是after_request,但我只需要在一个特定的登录请求之后运行它......

0 投票
1 回答
50 浏览

flask-session - 有人可以告诉我为什么会话不起作用

我有一个烧瓶服务器运行一些服务,但会话不工作

在我调用 login_auth 后,应该建立一个会话,当我尝试调用 get_session 时,它告诉我没有登录

0 投票
2 回答
1422 浏览

python - Flask 应用程序错误:“在服务器上找不到请求的 URL”

我正在尝试运行 Flask 应用程序,显示能够提交用户评论的图书概览页面。但是我遇到了两个问题:

1) 当我尝试运行下面的代码时,“/books/553803700”的 url 将我重定向回主页。

我想有一个问题

2)如果我在上面评论那个字符串,页面可以工作。但是当我尝试提交评论时,它显示“未找到。在服务器上未找到请求的 URL。如果您手动输入了 URL,请检查您的拼写并重试。”

应用程序.py 文件:

book.html 文件:

非常感谢您帮助解决这两个问题