in lib/google/serverless/exec.rb [782:811]
def track_status temp_version, secret
host = "#{temp_version}.#{@service}.#{@project}.appspot.com"
::Net::HTTP.start host do |http|
outpos = errpos = 0
delay = 0.0
loop do
sleep delay
uri = URI("http://#{host}/#{secret}")
uri.query = ::URI.encode_www_form outpos: outpos, errpos: errpos
response = http.request_get uri
data = ::JSON.parse response.body
data["outlines"].each { |line| puts "[STDOUT] #{line}" }
data["errlines"].each { |line| puts "[STDERR] #{line}" }
outpos = data["outpos"]
errpos = data["errpos"]
return data["status"] if data["status"]
if data["time"] > @timeout_seconds
http.request_post "/#{secret}/kill", ""
return "timeout"
end
if data["outlines"].empty? && data["errlines"].empty?
delay += 0.1
delay = 1.0 if delay > 1.0
else
delay = 0.0
end
end
end
end