gpt4 book ai didi

ruby-on-rails - 当我有并发请求时,我的 Rails session 正在重置

转载 作者:行者123 更新时间:2023-12-04 05:42:51 28 4
gpt4 key购买 nike

我想我可能对 Rails session 有一些误解,所以请耐心等待,我可能不会以最好的方式表达我的问题。

我正在开发带有 Ruby on Rails 后端的 iPhone 应用程序。我有一个 web View ,默认情况下转到一个 Controller 的索引操作(并使用 session ),在后台,一堆 API 调用转到另一个 Controller (不需要使用 session )。

问题是,我的 web View 设置的 session 似乎被 API 调用覆盖了。我的临时服务器非常慢,因此请求有很多时间相互重叠 - 我在日志中看到的基本上是这样的:

Request A (first controller) starts.  Session is empty.
Request B (second controller) starts. Session is empty.
Request A finishes. Request A has done authentication, and stored the user ID in the session. Session contains user ID.
Request B finishes. Session is empty.
Request C starts. Session is empty - not what I want.

现在,奇怪的是请求 B 不应该向 session 写入任何内容。

我确实有从 session 中读取的前后过滤器 - 例如:
user = User.find_by_id(session[:id])

或者
logger.debug session.inspect

如果我删除所有这些,那么一切都会按预期进行 - session 内容由请求 A 设置,并且在请求 C 开始时它们仍然存在。

所以。我想我缺少关于 session 如何工作的一些信息。为什么从 session 中读取会覆盖它?我应该以其他方式访问它吗?我是不是完全走错了路,问题出在别处?

感谢您的任何见解!

最佳答案

这是由 rails 处理 session 的方式引起的竞争条件的结果。见 http://www.paulbutcher.com/2007/05/race-conditions-in-rails-sessions-and-how-to-fix-them/

似乎您不能让并发请求修改 session 可靠。解决方案是使用不同的方法来存储 session (例如 active_record 或 redis),或者您可以消除并发请求。

关于ruby-on-rails - 当我有并发请求时,我的 Rails session 正在重置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2993624/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com