Check out nginx. It can be configured to separately upload a file and
provide a status indicator. I'm not sure if you could still retrieve the
WSGI Request separately or not -- but you could always take the AJAX route
like Russ suggested.

On Wed, Aug 8, 2012 at 6:42 AM, Jian Chang <[email protected]> wrote:

> 是不是可以用异步来完成? ajax upload
>
>
> 2012/8/8 Russell Keith-Magee <[email protected]>
>
>> On Wed, Aug 8, 2012 at 2:42 PM, 春燕 李 <[email protected]> wrote:
>> > Thanks !
>> >
>> > In my application, I want to upload  image files(such as *.iso) which
>> > are always large, it will take long time before the uploading
>> > completed. During this time, I cannot  send out other request on
>> > current page, because a new request will refresh the current page and
>> > make the uploading failed. My aim is that after I click the Upload
>> > button, the file uploading is processed in backend, I can send out
>> > other request  simutanously. Firstly , I tried to get the stream, and
>> > write  new handler to replace the exsiting processing. But after I
>> > read the source code , I find that the input stream got by django is
>> > activity limited,  it only can be read once, once reading is started,
>> > the current page shouldn't be refresh, or else the stream reading will
>> > be failed.
>> >
>> > Is it realizable to  uploading backend and simutanously send other
>> > request on current page, and the uploading won't interrupt because of
>> > leaving this page?
>>
>> Not really. This isn't something that's Django specific -- it's a
>> general problem with web browsers. Web browsers make requests.
>> Background requests are still requests, and they need to happen in the
>> context of a page that is in the foreground. If you change the
>> foreground page, you're going to stop any background activity that is
>> underway.
>>
>> That said, there might be something you can do by breaking the
>> background task into a large number of smaller requests using the HTTP
>> Range header, and then recombining the file on the server side from
>> all the individual chunks. That won't stop the background request from
>> being killed, but it will give you an opportunity to resume the upload
>> on a new page.
>>
>> However, this isn't something where I can point you at a simple page
>> of documentation and say "just call these three lines of Python". What
>> you're proposing isn't a simple task. You're going to need to become
>> very familiar with the HTTP specification, and work out how to put the
>> pieces together yourself.
>>
>> Yours,
>> Russ Magee %-)
>>
>> --
>> You received this message because you are subscribed to the Google Groups
>> "Django users" group.
>> To post to this group, send email to [email protected].
>> To unsubscribe from this group, send email to
>> [email protected].
>> For more options, visit this group at
>> http://groups.google.com/group/django-users?hl=en.
>>
>>
>  --
> You received this message because you are subscribed to the Google Groups
> "Django users" group.
> To post to this group, send email to [email protected].
> To unsubscribe from this group, send email to
> [email protected].
> For more options, visit this group at
> http://groups.google.com/group/django-users?hl=en.
>

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

Reply via email to