gpt4 book ai didi

ruby-on-rails - 在 Rails 3 中,如何在请求/响应周期完成后通过 Controller 调用一些代码?

转载 作者:可可西里 更新时间:2023-11-01 16:41:37 29 4
gpt4 key购买 nike

我有一个非常奇怪的情况:我有一个系统,其中客户端应用程序(客户端)对我的 Rails 服务器进行 HTTP GET 调用,并且该 Controller 进行一些处理,然后需要通过不同的路径(即它实际上通过 Rabbit 到达代理,然后代理调用客户端)。我无法更改那个不同调用的路径,我根本无法更改客户端(这是第 3 方系统)。

但是:问题是:除非来自客户端的 HTTP GET 已完成,否则通过不同路径的调用将失败。

所以我想弄清楚:有没有办法让 Rails 完成 HTTP GET 响应然后进行这个额外的调用?

我试过:

1) after_filter:这不起作用,因为后过滤器显然仍在请求/响应周期内,因此返回给客户端的 TCP/HTTP 响应尚未完成。

2) 排队工作人员:这可行,但并不理想,因为如果备份工作人员,则可能不会立即对客户端进行回调,而确实需要在客户端调用 Rails 之后立即进行应用

3) 启动一个单独的线程:这可能有效,但它让我感到紧张:在 Rails 中显式添加线程可能充满危险。

我欢迎任何想法/建议。

同样,简而言之,目标是:处理对 Rails 应用程序的 HTTP GET 调用并将 200 OK 返回给客户端,完全完成 HTTP 请求/响应周期,然后调用一些额外代码

如果有帮助,我可以提供任何进一步的详细信息。我发现 #1 和 #2 都是推荐的选项,但它们都不是我需要的。

理想情况下,Rails 中会有一些“after_response”回调,允许一些代码在完整的请求/响应周期完成之后运行。

最佳答案

可能使用环绕过滤器? Around 过滤器允许我们定义环绕 Rails 调用的每个 Action 的方法。因此,如果我为上述 Controller 设置一个环绕过滤器,我就可以控制每个 Action 的执行,在调用 Action 之前和调用之后执行代码,如果我愿意,还可以在某些情况下完全跳过调用 Action 。

关于ruby-on-rails - 在 Rails 3 中,如何在请求/响应周期完成后通过 Controller 调用一些代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34094230/

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