As suggested before me, you probably could load another page, and AJAX
back the results so you can track progress. One important thing there
is the buffer size, which in your example you set to -1, which IIRC
iis fully buffered, so communicate() wont return anything until
your're done with the exec.

There is an alternative with regard to post-connection tasks, which
launches your task in a separate thread asynchronously, but I'd
recommend that only if you have it already working the 'regular' way
and just want to get rid of the wait when the page is already sent to
the client.

On Feb 12, 12:55 pm, Cro <prah...@gmail.com> wrote:
> Good day.
> I discovered web2py a few weeks ago. I like it because it's light and
> powerful. :) And the templating system is excellent.
> I played with it a little. I worked in PHP and Karrigell before, so i
> know a little about web servers.
>
> Ok, straight to point.
>
> I use windows. I am trying to make a local server for running some
> automations. (that is, receive raw data from customers, move files
> from one place to another on the server, process data, compress the
> input and output files and send output data to customers. All is done
> automatically, via some batch files / python scripts)
>
> What i want is this : to create some kind of forum, with local area
> network access only, user / password access.
> Then, i want to call the scripts i defined (batch or python) from
> web2py and render in browser the messages that i receive while the
> automation process happens...
>
> I started to broadcast on LAN, port 80. I tested something. On a new
> page i defined :
>
> def index():
>     import os
>     content = "Starting<br>\n"
>
>     os.system('pause')
>
>     content += "The end<br>"
>     return dict( content=XML(content) )
>
> I hope you are not laughing :))
> I checked index page from a client. The page was suspended in client
> browser, and on the server there was one cmd window "Press any key to
> continue". I had to close the cmd window for the page to completely
> load. The other pages were working just fine even when the index page
> was locked, i was very pleased to see that. :)
>
> Now, i cannot work with os.system() calls, because i don't have the
> control i need. I don't know how to catch the messages from the
> program i am running with os.system. I don't need return the codes, i
> want full messages.
> So i used another example :
>
>     import os
>     import subprocess as _sproc
>     from subprocess import PIPE
>     content = "Starting<br>\n"
>
>     p = _sproc.Popen( 'c:web2py/ccc.bat', bufsize=-1, stdout=PIPE,
> stderr=PIPE, shell=True ).communicate()
>     retcode = p[0].replace('\r\n', '<br>\n') + '<br>'
>     content += retcode
>
>     content += "The end<br>"
>     return dict( content=XML(content) )
>
> The file "ccc.bat" contained:
> @ECHO OFF
>
> ECHO AA AAA
> ECHO BB BBB
>
> pause
>
> I was pleased to see that the execution was imediate and the server
> didn't lock. :)
>
> I also tested the same app with a more complex automation. The
> respective page and script freezes completely while the long
> application communicates, but the rest of pages work fine.
>
> I am very happy with web2py.
>
> Can anyone suggest any improvements i can do? Maybe run my
> applications in a different manner, so that the rest of the functions
> included in the script will work while automation communicates?
> Maybe refresh the page with each message printed, so that i don't have
> to wait for the whole process to finish before i can see the
> result?... I don't know how to do that yet.
>
> Thank you.
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"web2py Web Framework" group.
To post to this group, send email to web2py@googlegroups.com
To unsubscribe from this group, send email to 
web2py+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/web2py?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to