Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 为什么可以';我的一个Rails进程看不到另一个进程向DB提交了什么?_Ruby On Rails_Database - Fatal编程技术网

Ruby on rails 为什么可以';我的一个Rails进程看不到另一个进程向DB提交了什么?

Ruby on rails 为什么可以';我的一个Rails进程看不到另一个进程向DB提交了什么?,ruby-on-rails,database,Ruby On Rails,Database,我正在亚马逊FPS上开发一个应用程序。当您使用FPS付款时,付款会异步成功:您发出请求并等待POST(即时付款通知)通知您费用是否已完成 我需要用户查看是否在下一个页面加载时完成收费(如果可能),因此我让服务器: 然后向用户收费 在循环中旋转检查数据库的状态更新,以及 如果时间太长,请暂停 同时,另一个服务器进程是: 接收IPN和 注意到数据库中的成功,以供其他进程查看 我和三个工人一起经营独角兽。他们都登录到同一个终端窗口。我看到第一个过程开始旋转,反复报告指控仍然悬而未决。然后,我看到IPN

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

我需要用户查看是否在下一个页面加载时完成收费(如果可能),因此我让服务器:

  • 然后向用户收费
  • 在循环中旋转检查数据库的状态更新,以及
  • 如果时间太长,请暂停
  • 同时,另一个服务器进程是:

  • 接收IPN和
  • 注意到数据库中的成功,以供其他进程查看
  • 我和三个工人一起经营独角兽。他们都登录到同一个终端窗口。我看到第一个过程开始旋转,反复报告指控仍然悬而未决。然后,我看到IPN进入,第二个进程将其拾取,并向数据库写入它已成功。然后我看到第一个进程继续看到它被挂起

    为什么它从未看到写入数据库的成功值

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

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

    我的堆栈

    • 独角兽4.6.3
    • Rails 4.0
    • Ruby 2.0
    • 博士后9.2

    如果第三个进程看到它,听起来好像循环进程可能再也不会访问数据库了,而只是拉取旧的缓存副本?也许?@PhilipHallstrom的问题必须保持“也许”状态,直到我们看到这个循环代码。循环服务器进程正在运行
    如果charge.reload.pending?
    重复放置“{charge.id}仍然挂起”。如果它被缓存,它就在ActiveRecord下面的某个地方。