gpt4 book ai didi

Ruby CGI 重定向响应,无需等待脚本结束

转载 作者:数据小太阳 更新时间:2023-10-29 07:57:36 25 4
gpt4 key购买 nike

我正在开发一个 ruby​​ CGI 视频处理工具,并希望在点击 start-ffmpeg-for-an-hour-long-encoding-spree 按钮后将用户重定向到另一个位置。

代码如下:

@cgi.out("status" => "302", "location" => @job.report_url) {''}
@cgi.out{''}
@job.start

这样做在 Safari 5.0.5 中效果很好。但是 Firefox 在重定向之前等待脚本完成他的工作。而且,如果您的脚本完成时间比 Apache 的超时时间长,那么它很可能永远不会发生。

我希望有一种 cgi.close() 方法。哪个存在!但是是 CGI::Session 方法,与我无关。

这是另一个类似的问题......但不是重复的!因为我需要在 重定向后使用 stdin、stdout 和 stderr:Returning a response with Ruby CGI before script is finished?

那么,我如何使用同一脚本执行其他任务之前发送完整的 CGI 响应?

最佳答案

解决此类问题的通常方法是将应用程序分成两个进程。

  1. cgi部分
  2. 处理部分

处理部分通常是应用程序的单个实例,等待来自多个 cgi 部分的消息。 cgi部分只是向处理部分提交请求。可以按照您喜欢的方式进行通信,但通常使用作业/消息队列来完成。

通过这种方式,一旦作业被提交到队列,您就可以重定向用户,处理部分最终将转码您的视频。

另一个优势是大量并发请求不会使您的机器因数十个并发转码操作而过载。您还可以相对轻松地将处理部分移动到一台或多台机器上(取决于您选择的通信形式)/

快速 web search将向您展示数十个示例。

关于Ruby CGI 重定向响应,无需等待脚本结束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5911858/

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