I am checking pexpect. It is fantastic. It is really easy to integrate
in web2py because it is a single file. Too bad does not work on
windows. Anyway, this really opens the door to a lot interesting
applications.

Massimo

On Nov 17, 2:21 pm, mdipierro <[EMAIL PROTECTED]> wrote:
> I mean actual process, not session. You run into problems if you start
> two instances of web2py on the same machine or on different machines.
>
> Also mind that the cache uses the filename as key (first argument of
> cache.ram) to retrieve the file. You may want the key dependent on the
> response.session_id if you have one file per session. That depends on
> details.
>
> Massimo
>
> On Nov 17, 2:16 pm, artien <[EMAIL PROTECTED]> wrote:
>
> > Thanks the cache.ram works :) One process running web2py do you mean
> > as in actual processes or as in sessions?
>
> > Artien
>
> > On Nov 17, 8:00 pm, mdipierro <[EMAIL PROTECTED]> wrote:
>
> > > You are trying to create a process from one action (one http request)
> > > and access it from another one. This is what pexpect is for.
> > > I have neve used it before. The problem is that objects create in one
> > > request are not persistant unless you say do.
>
> > > There are two mechanisms for persistance: session and cache.
>
> > > 1) try session
>
> > >     def do_file(param1):
> > >        if param1 == 'create':
> > >           session.child=pexpect.spawn('nano -wc myfile.txt')
> > >       else:
> > >           session.child.sendline(param1)
> > >           session.child.close()
>
> > > will work if and only if child is pickable else you will get an error.
>
> > > 2) try cache.ram
>
> > >     def do_file(param1):
> > >        if param1 == 'create':
> > >           filename='myfile.txt'
> > >           child=cache.ram(filename,lambda:pexpect.spawn('nano -wc
> > > '+filename),0) #update cache
> > >        else:
> > >           # retrieve from cache without expiration
> > >           child=cache.ram(filename,lambda:None,10**10) #cache forver
> > >           child.sendline(param1)
> > >           child.close()
>
> > > this will work as long as you have only one process running web2py.
>
> > > On Nov 17, 12:26 pm, artien <[EMAIL PROTECTED]> wrote:
>
> > > > Hello,
>
> > > > I'm trying to use pexpect from web2py with limited success. What I
> > > > notice is that web2py doesn't treat the object like a normal python
> > > > program would.
>
> > > > A simple example (my real program creates ssh sessions this is just to
> > > > demonstrate the issue):
>
> > > > with ajax I call two functions:
>
> > > > first it calls
> > > > def open_file():
> > > >     do_file('create')
> > > >     message = 'created'
> > > >     return dict(message=message)
>
> > > > then it calls
> > > > def data_file():
> > > >     info =request.vars.values()[0]
> > > >     do_file('hello this program is crap)
> > > >     message = 'stored info into file'
> > > >     return dict(message=mesage)
>
> > > > Then we have the controller function which does it
>
> > > > def do_file(param1):
> > > >     if param1 == 'create':
> > > >         child=pexpect.spawn('nano -wc myfile.txt')
> > > >     else:
> > > >         child.sendline(param1)
> > > >         child.close()
>
> > > > Now it says that the second time:
>
> > > > UnboundLocalError: local variable 'child' referenced before assignment
>
> > > > When I try to store the child object in a session variable I get the
> > > > error that it can't store file objects.
>
> > > > Is there anyway I can make web2py keep its reference to the object so
> > > > I can keep using it?
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"web2py Web Framework" 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/web2py?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to