On May 19, 2:14 pm, amoygard <[email protected]> wrote: > Hi, > > I'm pretty new to web2py and web application frameworks. I'm trying to > create a new background process in controller to handle incoming ajax > data from a user.
You are trying to do too much: remember: the web is "stateless" --- when _anything_ comes in from a client that gets directed to your URL, (this is just an example flow, so you can get the general idea): - somewhere, a DNS server replaces the URI name with a destination address; - the destination server (let's say apache) tries to sort out, and direct to the correct app (in this case, web2py); - web2py's main() parses the path part of the URI to decide how to route internally - if it finds a matching app/controller, main() will set up the execution environment to prepare the call: - i.e., your models are "executed" so that the table definitions, etc. are all in the environment, and then your controller file - the function in your controller is called with this execution environment (this is the thread that you are trying to make, and should not bother) The controller function does it's stuff with the request, and returns (to main()) the response - sometimes nothing, sometimes a dict. of stuff; Main takes the return values from the controller, and processes appropriately, most often getting the view, parsing the template, creating the resulting view, and sending it back to the client. When an ajax call is made, you can see an example at http://www.web2py.com/book/default/section/10/3, and explanation of what this does. The general point: you call a controller with a request (even in the case of an ajax call); The response goes back to the caller. Lots of stuff happens for you - you don't need to write the entire web server underpinnings; just worry about the logic you want to implement so server and client can converse / exchange information. Hope this helps. Regards, - Yarko > I'm using the module multiprocessing for this. > However, when I start the new process, a new instance of web2py server > is started? I'm assuming this has something to do with forking (which > I don't know much about). Is there an easy workaround? Or should I > preferrably do this some other way, for instance with threads? > > Code is as follows (controller calls function 'someinit' in a module > in module-folder): > > def tekstpr(mstring,conn): > print mstring > conn.send("hello") > > def someinit(userid): > from multiprocessing import Pipe, Process > parent_conn, child_conn = Pipe() > p = Process(target=tekstpr,args=("I'm alive!",child_conn)) > session.procpipe = parent_conn > p.start() > session.procpipe.poll(300) > return session.procpipe.recv()

