Berndt Jung
2005-Jan-19 01:49 UTC
Error with fcgi and apache (web scraping, image manipulating)
Hi, I''m having an issue with fcgi an apache. The app works, but it crashes before the results display. All the files get created and are correct, but it seems that fcgi or apache get impatient. It seems to work when I only grab one page at a time, but runs into problems with 3+ pages. Here is the error: [Tue Jan 18 17:44:58 2005] [error] [client 127.0.0.1] FastCGI: comm with (dynamic) server "/Library/WebServer/Documents/magick_montage/public/dispatch.fcgi" aborted: (first read) idle timeout (30 sec) [Tue Jan 18 17:44:58 2005] [error] [client 127.0.0.1] FastCGI: incomplete headers (0 bytes) received from server "/Library/WebServer/Documents/magick_montage/public/dispatch.fcgi" And here is the code: def montage scrape("toes", 0) render ''picture/test'' end def scrape(keyword, start) tiles = Array.new re = /img\ssrc=\/images\S+/ (0..4).each do |st| scrape = Array.new open("http://images.google.com/images?q=#{keyword}&hl=en&lr=&safe=off&start=#{(20 * st).to_s}&sa=N") do |f| scrape = f.read.scan(re) end scrape.each do |s| s.sub!(/img\ssrc=\//, '''') is = open(''http://images.google.com/'' + s) os = Tempfile.new(''montage'') os.write(is.read) is.close os.close image = Image.read(os.path).first tiles << store(image) end end test_arr(tiles) end def store(image) if (image.columns > image.rows) (image.crop!(CenterGravity, image.rows, image.rows)).resize!(80,80) else (image.crop!(CenterGravity, image.columns, image.columns)).resize!(80,80) end @picture = Picture.new @picture.picture = image.to_blob @picture.kind = ''tile'' @picture.attributes = get_profile(image) if @picture.save @picture.id else error end end def test_arr(tiles) j = 0 tiles.each do |i| img = Image.from_blob(Picture.find(i).picture).first img.write("/Library/WebServer/Documents/magick_montage/public/images/test#{j}.jpg") j += 1 end end
Michael Koziarski
2005-Jan-19 03:09 UTC
Re: Error with fcgi and apache (web scraping, image manipulating)
On Tue, 18 Jan 2005 17:49:44 -0800, Berndt Jung <berndtj-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote:> Hi, > > I''m having an issue with fcgi an apache. The app works, but it > crashes before the results display. All the files get created and are > correct, but it seems that fcgi or apache get impatient. It seems to > work when I only grab one page at a time, but runs into problems with > 3+ pages. > > Here is the error: > > [Tue Jan 18 17:44:58 2005] [error] [client 127.0.0.1] FastCGI: comm > with (dynamic) server > "/Library/WebServer/Documents/magick_montage/public/dispatch.fcgi" > aborted: (first read) idle timeout (30 sec)Are you perhaps having the problem David mentioned at: http://weblog.rubyonrails.com/archives/2005/01/03/watch-for-huge-requests-on-default-fcgi/> [Tue Jan 18 17:44:58 2005] [error] [client 127.0.0.1] FastCGI: > incomplete headers (0 bytes) received from server > "/Library/WebServer/Documents/magick_montage/public/dispatch.fcgi" > > And here is the code: > > def montage > scrape("toes", 0) > render ''picture/test'' > end > > def scrape(keyword, start) > tiles = Array.new > re = /img\ssrc=\/images\S+/ > (0..4).each do |st| > scrape = Array.new > open("http://images.google.com/images?q=#{keyword}&hl=en&lr=&safe=off&start=#{(20 > * st).to_s}&sa=N") do |f| > scrape = f.read.scan(re) > end > scrape.each do |s| > s.sub!(/img\ssrc=\//, '''') > is = open(''http://images.google.com/'' + s) > os = Tempfile.new(''montage'') > os.write(is.read) > is.close > os.close > image = Image.read(os.path).first > tiles << store(image) > end > end > test_arr(tiles) > end > > def store(image) > if (image.columns > image.rows) > (image.crop!(CenterGravity, image.rows, image.rows)).resize!(80,80) > else > (image.crop!(CenterGravity, image.columns, image.columns)).resize!(80,80) > end > @picture = Picture.new > @picture.picture = image.to_blob > @picture.kind = ''tile'' > @picture.attributes = get_profile(image) > if @picture.save > @picture.id > else > error > end > end > > def test_arr(tiles) > j = 0 > tiles.each do |i| > img = Image.from_blob(Picture.find(i).picture).first > img.write("/Library/WebServer/Documents/magick_montage/public/images/test#{j}.jpg") > j += 1 > end > end > _______________________________________________ > Rails mailing list > Rails-1W37MKcQCpIf0INCOvqR/iCwEArCW2h5@public.gmane.org > http://lists.rubyonrails.org/mailman/listinfo/rails >-- Cheers Koz
Norman Timmler
2005-Jan-19 11:12 UTC
Re: Error with fcgi and apache (web scraping, image manipulating)
maybe apache has a probelm with logfile permissions. we ran into this problem yesterday. give it a try. ciao, norman Am Dienstag, den 18.01.2005, 17:49 -0800 schrieb Berndt Jung:> Hi, > > I''m having an issue with fcgi an apache. The app works, but it > crashes before the results display. All the files get created and are > correct, but it seems that fcgi or apache get impatient. It seems to > work when I only grab one page at a time, but runs into problems with > 3+ pages. > > Here is the error: > > [Tue Jan 18 17:44:58 2005] [error] [client 127.0.0.1] FastCGI: comm > with (dynamic) server > "/Library/WebServer/Documents/magick_montage/public/dispatch.fcgi" > aborted: (first read) idle timeout (30 sec) > [Tue Jan 18 17:44:58 2005] [error] [client 127.0.0.1] FastCGI: > incomplete headers (0 bytes) received from server > "/Library/WebServer/Documents/magick_montage/public/dispatch.fcgi" > > And here is the code: > > def montage > scrape("toes", 0) > render ''picture/test'' > end > > def scrape(keyword, start) > tiles = Array.new > re = /img\ssrc=\/images\S+/ > (0..4).each do |st| > scrape = Array.new > open("http://images.google.com/images?q=#{keyword}&hl=en&lr=&safe=off&start=#{(20 > * st).to_s}&sa=N") do |f| > scrape = f.read.scan(re) > end > scrape.each do |s| > s.sub!(/img\ssrc=\//, '''') > is = open(''http://images.google.com/'' + s) > os = Tempfile.new(''montage'') > os.write(is.read) > is.close > os.close > image = Image.read(os.path).first > tiles << store(image) > end > end > test_arr(tiles) > end > > def store(image) > if (image.columns > image.rows) > (image.crop!(CenterGravity, image.rows, image.rows)).resize!(80,80) > else > (image.crop!(CenterGravity, image.columns, image.columns)).resize!(80,80) > end > @picture = Picture.new > @picture.picture = image.to_blob > @picture.kind = ''tile'' > @picture.attributes = get_profile(image) > if @picture.save > @picture.id > else > error > end > end > > def test_arr(tiles) > j = 0 > tiles.each do |i| > img = Image.from_blob(Picture.find(i).picture).first > img.write("/Library/WebServer/Documents/magick_montage/public/images/test#{j}.jpg") > j += 1 > end > end > _______________________________________________ > Rails mailing list > Rails-1W37MKcQCpIf0INCOvqR/iCwEArCW2h5@public.gmane.org > http://lists.rubyonrails.org/mailman/listinfo/rails >