rtyler/Spawning

--threads=x for x>1 results in no response bodies ever being served

durin42 opened this issue · 2 comments

Reproduction recipe:
WSGI application:

"""Support for running hgweb as a WSGI app inside spawning."""
import os
HERE = os.path.dirname(__file__)
from mercurial.hgweb.hgwebdir_mod import hgwebdir
application = hgwebdir(os.path.join(HERE, 'hgweb.config'))

hgweb.config, which should be in the same dir as the wsgi application:

[extensions]
highlight=

[paths]
/ = /Some/path/with/several/hg/repositories/*

Run spawning, with actual output after attempting to load one page:

[imladris:~/Programming/spawnhg] augie% spawning spawnhg.application --reload=dev --port 9000 -i 0.0.0.0 --pidfile=spawning.pid --processes 2 --threads 4
(57697) *** Controller starting at Sun Oct 17 18:01:06 2010
Should start 2 new children
Controller.spawn_children(number=2)
(57698) reloader watching sys.modules
(57699) reloader watching sys.modules
(57698) wsgi starting up on http://0.0.0.0:9000/
(57699) wsgi starting up on http://0.0.0.0:9000/
127.0.0.1 - - [17/Oct/2010 18:01:09] "GET /?sort=lastchange HTTP/1.1" 200 162 0.376568

But the response from the server never arrives. Checking with cURL indicates that the response headers are served but the body never arrives:

[imladris:~] augie% curl -v http://localhost:9000/
* About to connect() to localhost port 9000 (#0)
*   Trying ::1... Connection refused
*   Trying fe80::1... Connection refused
*   Trying 127.0.0.1... connected
* Connected to localhost (127.0.0.1) port 9000 (#0)
> GET / HTTP/1.1
> User-Agent: curl/7.19.7 (universal-apple-darwin10.0) libcurl/7.19.7 OpenSSL/0.9.8l zlib/1.2.3
> Host: localhost:9000
> Accept: */*
> 
< HTTP/1.1 200 Script output follows
< Content-Type: text/html; charset=UTF-8
< Content-Length: 25353
< Date: Sun, 17 Oct 2010 23:02:41 GMT
< 

I'm wondering if this has anything to do with wsgi app support, my use of Spawning with threads is when using the django_factory.

Will investigate when I get some time (hopefully this evening)

It occurs to me that this might be related (somehow) to a generator response that isn't getting iterated properly.