在我的Rails應用程序控制器中,我發佈到同一臺機器上的應用程序的api。我已經建立了這一點來處理數據的發佈到網址:爲什麼我的Net :: HTTP.post_form超時?
url = "http://172.16.155.165:3000/api/jobs"
params = {
:input => "original/video.h264",
:output => "new/video.mp4",
:preset => 'h264'
}
jobResults = Net::HTTP.post_form(URI.parse(url), params)
,當我通過鐵軌控制檯運行這段代碼,但是當我在我的控制器使用它,它加載了之後給了我這個錯誤這個偉大的工程分鐘左右:
Timeout::Error in SeminarsController#create
Timeout::Error
一旦超時發生,數據實際上是發佈和api做它應該做的。它就像懸掛,直到它超時然後發佈數據。控制器永遠不會超越這一步。它應該將響應主體寫入一個jobResults.body
的文件,如果沒有超時,這個文件就可以正常工作。如果我將它寫入rails控制檯,它會立即輸出響應。 api將不會花一整分鐘來回應。
我正在做一些事情導致這種情況發生?我怎樣才能讓它工作正確?
編輯: 這是create
在app/controllers/api/jobs_controller.rb
代碼:
def create
job = Job.from_api(params, :callback_url => lambda { |job| api_job_url(job) })
if job.valid?
response.headers["X-State-Changes-Location"] = api_state_changes_url(job)
response.headers["X-Notifications-Location"] = api_notifications_url(job)
respond_with job, :location => api_job_url(job) do |format|
format.html { redirect_to jobs_path }
end
else
respond_with job do |format|
format.html { @job = job; render "/jobs/new"}
end
end
end
我實際上將超時設置爲500,它仍然超時。我只是在做測試。控制檯在一秒鐘內執行此操作,但該應用程序無法在500中執行此操作。我認爲還有其他功能可以保存我的應用程序。我只是不知道它會是什麼。在後臺運行這是理想的。我會尋找正確的方式來做到這一點。謝謝您的幫助。我想我可能會用'curl -d ...'在反引號中運行一個系統調用,並且只能解決無法使用返回值的問題。 –