*a simpler solution may be to set vars inside your __init__ then just pass
them in via the render - print's do not work in webpy as far as i've tried.*
*
*
*e.g.  return render(init_var, string_from_class_var)*
*
*
-----------------------
Visit
http://www.superantispyware.com/superantispyware.html?rid=3971 Remove All
The Spyware - Not Just The Easy Ones!
http://1-4-u.info | Don't send insanely long links!
Need a Pick-Me-Up? http://quotes.feedtheguru.com



On Wed, Jun 30, 2010 at 8:17 AM, Mark Erbaugh <[email protected]> wrote:

>
> On Jun 29, 2010, at 7:38 PM, Tejaswi wrote:
>
> > I have the following code that does a simple hello wolrd app using
> > webpy. For each call to the GET method, the class Dashboards
> > "__init__" method gets called. Is there a way to change the behavior
> > to let __init__ be called only once? I have some expensive setup
> > methods in __init__ and I don't want them getting called for each call
> > to GET.
> >
> > import web
> > urls = ('/', 'Dashboard')
> > web.config.debug = False
> > app = web.application(urls, globals())
> > class Dashboard:
> >    def __init__(self):
> >        # Add other init methods here
> >        print "Should be printed only once"
> >
> >    def GET(self):
> >        return "Hello world!"
> >
> > if __name__ == "__main__":
> >    app.run()
> >
> > I am sure there is something rudimentary that I am missing. Hope
> > someone here can help me. I tried searching on the groups and on the
> > webpy site for info. But no luck still.
>
>
> The reason that __init__ is called multiple times is that at least
> conceptually, a new instance of your Python script is run for each web page
> retrieved.  IOW, when the web server receives a request for a page, your
> application is started up and passed parameters and environment variables.
> Your application takes this data an creates an output web page that is
> returned to the web server and your application terminates.  This is what
> happens when your application is run as a CGI (common gateway interface)
> program with an external web server, such as apache.
>
> If you are using webpy's built in server, the server portion stays running.
> You could modify the server code (it's also written in Python) to do your
> initialization; however, that would not work if you migrated your
> application to another web server.
>
> You could look into webpy's session support, but that's really designed to
> keep persistent information for a given user and it sounds like you want
> persistent information for multiple users.
>
> Here's a suggestion:  Have the program calculate the expensive information
> and save it to a file, perhaps using Python's pickle method. Then each time
> the web page is retrieved, the __init__ would only load the pre computed
> data.  You could time stamp the data so that it would expire periodically
> and have to be re-computed.
>
> Mark
>
> --
> You received this message because you are subscribed to the Google Groups
> "web.py" group.
> To post to this group, send email to [email protected].
> To unsubscribe from this group, send email to
> [email protected] <webpy%[email protected]>.
> For more options, visit this group at
> http://groups.google.com/group/webpy?hl=en.
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"web.py" 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/webpy?hl=en.

Reply via email to