2010-11-15 3 views
3

Кто-нибудь знает, как отправить ответ CGI в Ruby до CGI-скрипт завершен?Возврат ответа с Ruby CGI до завершения скрипта?

Я создаю API HTTP для Fire-and-забывания. Я хочу, чтобы клиент передавал мне данные по HTTP и успешно возвращал ответ, а , затем, он обрабатывает данные и выполняет некоторую обработку (без того, чтобы клиент должен был ждать ответа).

Я пробовал несколько вещей, которые не работают, включая вилку. Следующее будет просто ждать 5 секунд при вызове через HTTP.

#!/usr/bin/ruby 

require 'cgi' 

cgi = CGI.new 
cgi.out "text/plain" do 
    "1" 
end 

pid = fork 
if pid 
    # parent 
    Process.detach pid 
else 
    # child 
    sleep 5 
end 

ответ

3

Я ответил на свой вопрос. Оказывается, мне просто нужно закрыть $, $ стандартный ввод стандартный вывод и $ STDERR в дочернем процессе:

#!/usr/bin/ruby 

require 'cgi' 

cgi = CGI.new 
cgi.out "text/plain" do 
    "1" 
end 

pid = fork 
if pid 
    # parent 
    Process.detach pid 
else 
    # child 
    $stdin.close 
    $stdout.close 
    $stderr.close 
    sleep 5 
end 
+0

Я был в состоянии получить то, что я хотел с 'Process.daemon pid'. – DutGRIFF

Смежные вопросы