You run the same code at configure time and load it once per process. Even if you do this once at request time or once at configure time you have to do it once per process.
> On Oct 9, 2018, at 00:00, Thierry Florac <[email protected]> wrote: > > And how do you handle such use case when working in a > multi-process/multi-hosts cluster configuration? > > Le lun. 8 oct. 2018 à 19:10, Michael Merickel <[email protected] > <mailto:[email protected]>> a écrit : > If you are doing loading of data at "first run of the function" then you have > introduced a race condition in your app where unless you do appropriate > locking, two threads (most wsgi servers serve a request per thread) may both > consider themselves the first run and load the data. The only way to do this > without locks is to do things at config-time like I suggested before. There > are hacks that you can do because it's Python with a GIL in which you can do > locking in more lightweight ways in the "first run of the function" case but > I do not recommend relying on that behavior. > > As far as defining an object as read-only, there is nothing specific to > Pyramid here and you'll have to find a satisfactory solution in the rest of > Python world. > > > On Mon, Oct 8, 2018 at 11:20 AM Lukasz Szybalski <[email protected] > <mailto:[email protected]>> wrote: > > > On Sunday, October 7, 2018 at 12:59:58 AM UTC-5, Michael Merickel wrote: > This sounds like an application-global object. These are typically stored on > the registry at config-time. For example, in your main you could set > config.registry.foo = contract. The registry is available as request.registry > and subsequently anything you add to it. You can see lots of examples of this > in pyramid addons and things like the dbsession_factory in the alchemy > cookiecutter. > > Thank you. > > I decided to add it at 1st run of the function: > try: > if not request.registry.mycontract: > request.registry.mycontract = Contract() > mycontract=copy.copy(request.registry.mycontract) > ... > #rest of the code: > mycontract.add_user() > mycontract.update_terms() > > Sidenote: > Is there a way to force this object to be "read only" or now allow > modification, to prevent somebody else in some other sections of the code > accidently modifies request.registry.mycontract? > > **update run at 0.42755 sec now. > > Thanks > Lucas > > > > > > On Sat, Oct 6, 2018 at 5:00 PM Lukasz Szybalski <[email protected] <>> wrote: > Hello, > I have an enterprise system that is creating a class but it takes a long time > to initiate. About 2 sec, 90K _setitem from pickle. Nothing to profile, since > OS cashes the file its as fast as it gets. > > I'm trying to find a way in pyramid where I can: > > #store below at start, of the process, let it initiate, > #then somehow make it read only, > #so that a process can use it later and modify its own copy > > from enterprise import Contract > my= Contract() > > > #rest of the program > my2 = copy my (or copy on write, similar how qcow format works) > my2.find_contract('abc') > my2.add_name('Lucas') > return (my2.stuff) > > I don't seem to be finding the right terminology, or technique to do this, > and where to place it in pyramid? > > Thanks > Lucas > > -- > http://lucasmanual.com/ <http://lucasmanual.com/blog/> > > -- > You received this message because you are subscribed to the Google Groups > "pylons-discuss" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected] <>. > To post to this group, send email to [email protected] <>. > To view this discussion on the web visit > https://groups.google.com/d/msgid/pylons-discuss/CAKkTUv3qgT%2BUk0-uvLB1owZEA3W%3D-7XA-wkiyZbteWHPAcO6vg%40mail.gmail.com > > <https://groups.google.com/d/msgid/pylons-discuss/CAKkTUv3qgT%2BUk0-uvLB1owZEA3W%3D-7XA-wkiyZbteWHPAcO6vg%40mail.gmail.com?utm_medium=email&utm_source=footer>. > For more options, visit https://groups.google.com/d/optout > <https://groups.google.com/d/optout>. > > -- > You received this message because you are subscribed to the Google Groups > "pylons-discuss" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected] > <mailto:[email protected]>. > To post to this group, send email to [email protected] > <mailto:[email protected]>. > To view this discussion on the web visit > https://groups.google.com/d/msgid/pylons-discuss/6590645a-7af6-480a-a866-ab1af78e0d42%40googlegroups.com > > <https://groups.google.com/d/msgid/pylons-discuss/6590645a-7af6-480a-a866-ab1af78e0d42%40googlegroups.com?utm_medium=email&utm_source=footer>. > For more options, visit https://groups.google.com/d/optout > <https://groups.google.com/d/optout>. > > -- > You received this message because you are subscribed to the Google Groups > "pylons-discuss" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected] > <mailto:[email protected]>. > To post to this group, send email to [email protected] > <mailto:[email protected]>. > To view this discussion on the web visit > https://groups.google.com/d/msgid/pylons-discuss/CAKdhhwEJbH1qNNZ2-O8D2ie243nAAXj0knXhf8kXskLYfWYqqA%40mail.gmail.com > > <https://groups.google.com/d/msgid/pylons-discuss/CAKdhhwEJbH1qNNZ2-O8D2ie243nAAXj0knXhf8kXskLYfWYqqA%40mail.gmail.com?utm_medium=email&utm_source=footer>. > For more options, visit https://groups.google.com/d/optout > <https://groups.google.com/d/optout>. > > > -- > http://www.imagesdusport.com <http://www.imagesdusport.com/> -- > http://pyams.readthedocs.io <http://pyams.readthedocs.io/> > > -- > You received this message because you are subscribed to the Google Groups > "pylons-discuss" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected] > <mailto:[email protected]>. > To post to this group, send email to [email protected] > <mailto:[email protected]>. > To view this discussion on the web visit > https://groups.google.com/d/msgid/pylons-discuss/CAPX_VWDAG9-V%3DSibaxztAa%2B8nHdXcrCEqp4Sn7CMjX%3DiQ7gNLA%40mail.gmail.com > > <https://groups.google.com/d/msgid/pylons-discuss/CAPX_VWDAG9-V%3DSibaxztAa%2B8nHdXcrCEqp4Sn7CMjX%3DiQ7gNLA%40mail.gmail.com?utm_medium=email&utm_source=footer>. > For more options, visit https://groups.google.com/d/optout > <https://groups.google.com/d/optout>. -- You received this message because you are subscribed to the Google Groups "pylons-discuss" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/pylons-discuss/8CF2F822-A0C5-4541-87DE-E066D11431DA%400x58.com. For more options, visit https://groups.google.com/d/optout.
