Ok i decided to post the question here because i really don’t know what to do or even if its possible. You might tell me it’s a repost or so but i aready read similar posts about it and it didn’t helped me out.
Here is the deal. I have an admin interface with django and want to download a file from an external site on my server with a progressbar showing the percentage of the download.
I can’t do anything while it’s downloading. I tried to run a command with call_command within a view but it’s the same.
Is it because Django server is single threaded? So, is it even possible do achieve what i want to do ?
Thanks in advance,
It’s possible but takes some jumps though the metaphorical hoops. My answer isn’t Django specific, you’ll need to translate it to your framework.
Start a thread that does the actual download. While it downloads, it must update some data structure in the user’s session (total size of the download, etc).
In the browser, start a timer which does AJAX requests to a “download status URL”
Create a handler for this URL which takes the status from the session and turns that into JSON or a piece of HTML which you send to the browser.
In the AJAX handler’s success method, take the JSON/HTML and put it into the current page. Unless the download is complete (this part is more simple with JSON), restart the timer.