Hello,

I have a problem calling subprocess.Popen from a view:
The view that calls subprocess.Popen is not displayed until the
subprocess finishes.
The server send "200 OK" immediately, but not the content of the page.

My question is: Is this a limitation of Django's development server or
am I doing it wrong?

The server does not completely hangs, as other views can be processed
in the meantime.

There are already a few questions on that topic and Google gives a few
other threads, but I cannot find a clear answer to my question.

Note: Cross-posted on: 
http://stackoverflow.com/questions/4863405/subprocess-blocks-django-view

## How to reproduce

### Create test project & app:

> cd /tmp
> django-admin.py startproject django_test
> cd django_test
> ./manage.py startapp subprocess_test

### Replace urls.py & subprocess_test/views.py with:

* urls.py:

    from django.conf.urls.defaults import *

    urlpatterns = patterns('',
        (r'^hello$', 'subprocess_test.views.hello'),
        (r'^start$', 'subprocess_test.views.start'),
    )

* subprocess_test/views.py

    from django.http import HttpResponse

    import subprocess

    def hello(request):
        return HttpResponse('Hello world!')

    def start(request):
        subprocess.Popen(["/bin/sleep", "10"])
        return HttpResponse('start done')

### Test it:

> ./manage.py runserver 0.0.0.0:8000

Go to http://127.0.0.1:8000/hello and http://127.0.0.1:8000/start
Notice that "start" takes 10s to load and that you can load "hello"
during that time.
For example, I get such a log:

> [01/Feb/2011 07:20:57] "GET /hello HTTP/1.1" 200 12
> [01/Feb/2011 07:21:01] "GET /start HTTP/1.1" 200 10
> [01/Feb/2011 07:21:01] "GET /hello HTTP/1.1" 200 12
> [01/Feb/2011 07:21:02] "GET /hello HTTP/1.1" 200 12

Using wget:
> wget http://127.0.0.1:8000/start
> --2011-02-01 14:31:11--  http://127.0.0.1:8000/start
> Connecting to 127.0.0.1:8000... connected.
> HTTP request sent, awaiting response... 200 OK
> Length: unspecified [text/html]
> Saving to: `start'
>
>     [           <=>                           ] 10          --.-K/s   in 9,5s
>
> 2011-02-01 14:31:21 (1,05 B/s) - « start » saved [10]

-- 
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To post to this group, send email to django-users@googlegroups.com.
To unsubscribe from this group, send email to 
django-users+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/django-users?hl=en.

Reply via email to