On Tuesday, January 15, 2013 4:39:50 AM UTC-8, Sascha Gottfried wrote:
>
> Hello group,
> I am looking for a way to build up and keep my domain model in memory 
> during pyramid serves my application. This time I do not want to use a SQL 
> database or ZODB as the persistence layer. I currently maintain an URL 
> dispatch based pyramid app using ZODB - this is where my current pyramid 
> experience is coming from.
>
> Now I want to use pyramid to build an application to visualize data loaded 
> from large CSV files on local harddisk. I use traversal to map URLs to 
> folders and files. During application startup I create a basic resource 
> tree while using several plain python model classes. Typical application 
> usage should enlarge the resource tree by lazy loading child objects as 
> requested by users. Lazy loading takes several seconds. This should happen 
> only one time for every "resource" in the resource tree. My intention is to 
> keep the main application object(a.k.a resource tree) in memory during 
> several requests. Parsing CSV files during every request is way to slow. 
> This actually happens.
>
> As request by traversal based applications I do pass the root_factory to 
> the Configurator. The pyramid glossary cleary notes: "The “root factory” 
> of a Pyramid application is called on every request sent to the 
> application.". This way the application restarts building the resource tree 
> on every request. 
>
> def main(global_config, **settings):
>     root = settings['root']
>     if root is None:
>         raise ValueError('virginia requires a root')
>
>     def get_root(environ):     
>         fs = Filesystem(os.path.abspath(os.path.normpath(root)))
>         directory = Directory(fs, root) 
>         application = Application(directory) 
>         return application
>     
>     config = Configurator(root_factory=get_root, settings=settings)
>
>
> I already tried passing a singleton to the root_factory. I currently do 
> not use any caching/sessioning like beaker. 
> Any suggestions how to build up a resource tree at runtime that keeps 
> alive during requests??? Thanks for your answers!
>

Create the root object *outside* of `get_root()` and simply have 
`get_root()` return that object. 

-- 
You received this message because you are subscribed to the Google Groups 
"pylons-discuss" group.
To view this discussion on the web visit 
https://groups.google.com/d/msg/pylons-discuss/-/JukZZ1RC7ywJ.
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/pylons-discuss?hl=en.

Reply via email to