为什么我的一个Rails进程看不到对方提交给DB的内容?

时间:2013-07-10 23:26:15

标签: ruby-on-rails database

我正在亚马逊FPS上开发应用程序。当您使用FPS付款时,付款会异步成功:您提出请求并等待POST(即时付款通知),通知您是否已完成收费。

我需要用户查看下一页加载完成的费用(如果可能),所以我有服务器:

  1. 向用户收费,然后
  2. 循环旋转,检查数据库是否有状态更新,
  3. 如果花费太长时间超时
  4. 同时,另一个服务器进程是:

    1. 接收IPN和
    2. 注意到数据库中其他进程的成功与否。
    3. 我和3名工人一起经营独角兽。他们都登录到同一个终端窗口。我看到第一个过程开始旋转,反复报告说充电仍然悬而未决。然后我看到IPN进来了,第二个进程选择它并写入数据库它已成功。然后我看到第一个进程继续看到它正在等待。

      为什么它永远不会看到写入数据库的成功价值?

      我感觉像是一个交易问题,所以我运行了一个单独的流程,循环并输出最新费用的状态。当第二个过程报告它标记了收费成功时,第三个独立过程同意了。这只是第一个无法看到更新值的服务器进程。

      据我所知,第一个进程中的循环不在事务中,因此它不应该读取旧快照。但也许是这样?我怎么说?

      我的筹码

      • Unicorn 4.6.3
      • Rails 4.0
      • Ruby 2.0
      • Postgres 9.2

0 个答案:

没有答案