Yes, like you say... i have modified the controller code become like
this :

def run_command(self, *args):
    p = subprocess.Popen(args, stdout=subprocess.PIPE,
stderr=subprocess.PIPE)
    return p.communicate()

def update():
    output, error = run_command('/bin/sh','apt-get','update', '-V')
    return dict(output=output, error=error)

and for notes, update controller use external executable from sistem.
i mean external, not come from web2py, own defined class, or some
function. apt-get was debian-based application.

and related view :
{{extend 'layout.html'}}
<p>{{=output}}</p>
{{=error}}
{{pass}}

and you can look output here 
http://imageshare.web.id/images/48jjun7nv5kbdk95aw71.png
like scrambled... how to parse output line by line ??

Thanks again

On Jan 17, 2:29 am, Massimo Di Pierro <[email protected]>
wrote:
> On Jan 15, 11:43 pm, blackshirt <[email protected]> wrote:
>
> > Thanks Massimo, you were great's people..
>
> > 1. if we read from file resulted from redirected stdout, i think that
> > we get complete output finally, not ongoing process output ??
> > that was right, Massimo ?? correct me if i'm wrong ..
>
> you read what has been flushed. If the process has completed you read
> everything.
>
>
>
> > 2. if we are using popen (popen2 or whatever), first arguments was
> > cmd.. i think that cmd was external program or script, not function
> > inside controller.. is true like that ?
> > i don't want use external script/helper.. is it possible ?
>
> you can probably do with the multiprocessing module. I am not sure how
> it handles stdout.
>
>
>
> > On Jan 15, 12:15 am, Massimo Di Pierro <[email protected]>
> > wrote:
>
> > > I think apt sends the output to stdout. There are two ways to capture
> > > that:
>
> > > 1) redirect stdout to a file, then read and display the file. This is
> > > not thread safe which requires you lock when you do it
>
> > > 2) use multiprocessing or popen and run the function in a separate
> > > process which then captures the output.
>
> > > I this case I would go with 1.
>
> > > On Jan 12, 8:24 pm, blackshirt <[email protected]> wrote:
>
> > > > i have some a littel coding with web2py framework..
> > > > here is my controller and file :
>
> > > > def update():
> > > >    cache = apt.Cache()
> > > >    progress = apt.progress.TextFetchProgress()
> > > >    res = cache.update(progress)
> > > >    return dict(res = res)
>
> > > > in this related view..
>
> > > > {{extend 'layout.html'}}
> > > > {{=res}}
> > > > {{pass}}
>
> > > > the controller works normally, ie. update the APT database.. i see it
> > > > progress on console output.
> > > > but on view just return value
>
> > > > True
>
> > > > after process update finish...
>
> > > > i hope, the output progress, like this normally :
>
> > > > Hithttp://ftp.hk.debian.orgstableRelease.gpg
> > > > Hithttp://security.debian.orgstable/updatesRelease.gpg
> > > > Ignoredhttp://security.debian.org/stable/updates/contribTranslation-
> > > > en
> > > > Failedhttp://security.debian.org/stable/updates/contribTranslation-
> > > > en
> > > > Ignoredhttp://security.debian.org/stable/updates/mainTranslation-en
> > > > Failedhttp://security.debian.org/stable/updates/mainTranslation-en
> > > > Ignoredhttp://security.debian.org/stable/updates/non-free
> > > > Translation-en
> > > > Failedhttp://security.debian.org/stable/updates/non-freeTranslation-
> > > > en
> > > > Hithttp://security.debian.orgstable/updatesRelease
> > > > Donehttp://security.debian.orgstable/updatesRelease
> > > > Ignoredhttp://ftp.hk.debian.org/debian/stable/contribTranslation-en
> > > > Failedhttp://ftp.hk.debian.org/debian/stable/contribTranslation-en
> > > > Hithttp://security.debian.orgstable/updates/mainamd64Packages
> > > > Ignoredhttp://ftp.hk.debian.org/debian/stable/mainTranslation-en
> > > > Failedhttp://ftp.hk.debian.org/debian/stable/mainTranslation-en
> > > > Hithttp://security.debian.orgstable/updates/contribamd64Packages
> > > > Hithttp://security.debian.orgstable/updates/non-freeamd64Packages
> > > > Ignoredhttp://ftp.hk.debian.org/debian/stable/non-freeTranslation-
> > > > en
> > > > Failedhttp://ftp.hk.debian.org/debian/stable/non-freeTranslation-en
> > > > Hithttp://ftp.hk.debian.orgstableRelease
> > > > Donehttp://ftp.hk.debian.orgstableRelease
> > > > Hithttp://ftp.hk.debian.orgstable/mainSources
> > > > Hithttp://ftp.hk.debian.orgstable/contribSources
> > > > Hithttp://ftp.hk.debian.orgstable/non-freeSources
> > > > Hithttp://ftp.hk.debian.orgstable/mainamd64Packages
> > > > Hithttp://ftp.hk.debian.orgstable/contribamd64Packages
> > > > Hithttp://ftp.hk.debian.orgstable/non-freeamd64Packages
> > > > Done downloading
>
> > > > showing on the view output..
> > > > How we can do this on web2py ?
> > > > i'm still pretty newbie on python and web2py
>
> > > > thanks

Reply via email to