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 <mmeri...@gmail.com> 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 <szybal...@gmail.com> > 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 <szyb...@gmail.com> >>> 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 pylons-discus...@googlegroups.com. >>>> To post to this group, send email to pylons-...@googlegroups.com. >>>> 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. >>>> >>> -- >> 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 pylons-discuss+unsubscr...@googlegroups.com. >> To post to this group, send email to pylons-discuss@googlegroups.com. >> 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. >> > -- > 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 pylons-discuss+unsubscr...@googlegroups.com. > To post to this group, send email to pylons-discuss@googlegroups.com. > 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. > -- http://www.imagesdusport.com -- 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 pylons-discuss+unsubscr...@googlegroups.com. To post to this group, send email to pylons-discuss@googlegroups.com. 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. For more options, visit https://groups.google.com/d/optout.