if form.process().accepts: del(globals()['cached_dict']) return_cached_dict(900)
I still get key error... :( Like if they were not executed... I test it and the factory in shell and everthing work fine there... Richard On Tue, Feb 18, 2014 at 3:19 PM, Niphlod <niph...@gmail.com> wrote: > did you try to short-circuit the code to delete the cached value and > refill it with the new copy of the dict to see if it's a culprit of your > code or of the cache ? > Mind that cache.ram has some subtle differences because it just stores a > pointer to the object, not the copy of the object like all other backends > > > On Tuesday, February 18, 2014 4:01:16 PM UTC+1, Richard wrote: > >> Need advice! >> >> Richard >> >> >> On Mon, Feb 17, 2014 at 4:11 PM, Richard Vézina <ml.richa...@gmail.com>wrote: >> >>> Nop! >>> >>> :( >>> >>> Richard >>> >>> >>> On Mon, Feb 17, 2014 at 3:54 PM, Richard Vézina >>> <ml.richa...@gmail.com>wrote: >>> >>>> Hmm, I think I find my issue... >>>> >>>> if form.process().accepts: >>>> db.commit() >>>> factory_cached_dict(0) # Because in this form I just add a value >>>> to the table use to create the python dict >>>> >>>> >>>> On Mon, Feb 17, 2014 at 3:41 PM, Richard <ml.richa...@gmail.com> wrote: >>>> >>>>> Hello, >>>>> >>>>> I have an issue with app design and global variable cached python >>>>> dict... >>>>> >>>>> I use web2py 2.4.7 >>>>> >>>>> I use to create cached python dict in models like so : >>>>> >>>>> update_cached_dict_if_elapsed_time = 900 >>>>> cached_dict = cache.ram('cached_dict', >>>>> lambda: {r[0]: r[1] for r in >>>>> db.executesql("""...""")}, >>>>> time_expire=update_cached_ >>>>> dict_if_elapsed_time) >>>>> >>>>> cached_dict is a for representation of a given table ids... It intent >>>>> to reduce the number of requests that hit the database by using python >>>>> dict >>>>> as much as possible... >>>>> >>>>> But I got in trouble trying to update this dict with >>>>> update_cached_dictt_if_elapsed_time... First as cached_dict this >>>>> variable is in globals, so I use to add more logic around the >>>>> update_cached_dict_if_elapsed_time var like so : >>>>> >>>>> >>>>> update_cached_dict_if_elapsed_time = None >>>>> if update_cached_dict_if_elapsed_time == 0: >>>>> pass >>>>> elif request.args(0) == 'table_name' and request.function == 'create' >>>>> and request.post_vars: >>>>> update_cached_dict_if_elapsed_time = 0 >>>>> >>>>> I find this cumbersome and prone to error because if I have other >>>>> thing that should trigger a dict update, I have to add more logic... >>>>> >>>>> So, I though I could make factory dict function like so : >>>>> >>>>> def factory_cached_dict(update_cached_dict_if_elapsed_time=900): >>>>> global >>>>> cached_dict >>>>> cached_dict = cache.ram('cached_dict', >>>>> lambda: {r[0]: r[1] for r in >>>>> db.executesql("""...""")}, >>>>> time_expire=update_cached_ >>>>> dict_if_elapsed_time) >>>>> >>>>> factory_cached_dict(900) >>>>> >>>>> Above is in models... >>>>> >>>>> Then I though I could just update my global cached_dict var from any >>>>> controller like so : >>>>> >>>>> if form.process().accepts: >>>>> factory_cached_dict(0) # Because in this form I just add a value >>>>> to the table use to create the python dict >>>>> >>>>> But I am really desapointed it not seems to work because I still >>>>> experiment issue with not up to date cached_dict because there is missing >>>>> key value pairs for id and it representation. >>>>> >>>>> I think the issue is that even if I call the factory after form submit >>>>> the dict get recreated at each request by the factory call in models or >>>>> there is something else going on that I don't understand (maybe issue with >>>>> cache in web2py in web2py 2.4.7??) >>>>> >>>>> Thanks for any help. >>>>> >>>>> Richard >>>>> >>>>> -- >>>>> Resources: >>>>> - http://web2py.com >>>>> - http://web2py.com/book (Documentation) >>>>> - http://github.com/web2py/web2py (Source code) >>>>> - https://code.google.com/p/web2py/issues/list (Report Issues) >>>>> --- >>>>> You received this message because you are subscribed to the Google >>>>> Groups "web2py-users" group. >>>>> To unsubscribe from this group and stop receiving emails from it, send >>>>> an email to web2py+un...@googlegroups.com. >>>>> >>>>> For more options, visit https://groups.google.com/groups/opt_out. >>>>> >>>> >>>> >>> >> -- > Resources: > - http://web2py.com > - http://web2py.com/book (Documentation) > - http://github.com/web2py/web2py (Source code) > - https://code.google.com/p/web2py/issues/list (Report Issues) > --- > You received this message because you are subscribed to the Google Groups > "web2py-users" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to web2py+unsubscr...@googlegroups.com. > For more options, visit https://groups.google.com/groups/opt_out. > -- Resources: - http://web2py.com - http://web2py.com/book (Documentation) - http://github.com/web2py/web2py (Source code) - https://code.google.com/p/web2py/issues/list (Report Issues) --- You received this message because you are subscribed to the Google Groups "web2py-users" group. To unsubscribe from this group and stop receiving emails from it, send an email to web2py+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.