Are you using nginx/uwsgi? If so, I believe cache.ram would not be shared across the different uwsgi worker processes. You might consider switching to the Redis cache.
Anthony On Wednesday, January 13, 2016 at 11:26:16 AM UTC-5, Richard wrote: > > Hello, > > Still struggle with this. I don't understand why cache dict is not updated > in real time... > > It get updated but there is a strange delay. > > Thanks > > Richard > > On Mon, Jan 4, 2016 at 4:18 PM, Richard Vézina < > ml.richard.vez...@gmail.com> wrote: > >> UP here! >> >> Any help would be appreciate... >> >> Richard >> >> On Mon, Dec 21, 2015 at 10:22 PM, Richard <ml.richard.vez...@gmail.com> >> wrote: >> >>> Hello, >>> >>> I am still under 2.9.5, I have a simple dict cached in ram which never >>> expire that I update when new key value are added to the system... Mainly >>> the dict contain id and their representation... >>> >>> It works flawlessly in dev, but once I pushed in prod, it seems that the >>> cached dict takes time to really update... Here how I manage the creation >>> an update of this dict : >>> >>> def set_id_represent(update_id_represent_if_elapsed_time=None, id=None): >>> """ >>> Calling this function will create in globals the "id_represent" >>> variable if the call is made without >>> id. If id is passed, it will update the id_represent dictionary with >>> new >>> id and it representation. >>> :param id: >>> :param update_id_represent_if_elapsed_time: >>> """ >>> if 'id_represent' not in globals(): >>> global id_represent >>> id_represent = \ >>> cache.ram('id_represent', >>> lambda: {r.id: r.represent_field >>> for r in db().select(db.table_name.id, >>> db.table_name. >>> represent_field, >>> orderby=db. >>> table_name.represent_field) >>> }, >>> time_expire=update_id_represent_if_elapsed_time) >>> elif isinstance(id, int) or isinstance(id, long): >>> id_represent_query = \ >>> db(db.table_name.id == id >>> ).select(db.table_name.id, >>> db.table_name.represent_field, >>> orderby=db.table_name.represent_field) >>> id_represent.update({r.id: r.represent_field for r in >>> id_represent_query}) >>> if id: >>> return id_represent[id] >>> >>> set_id_represent(update_id_represent_if_elapsed_time=None) >>> >>> Then when I want to update the cached dict with new k, v : >>> >>> set_id_represent(id=my_id) >>> >>> I have made some test and print after the id_represent.update(...) above >>> from the function call and the dict seems to be updated... The function >>> that call set_in_represent(id=id) doesn't failed, but when we want to >>> access page which user id_represent[some_id], they all failed for a couples >>> of minutes... Like if the cached dict not get update immediately... >>> >>> Thanks for any pointer... >>> >>> 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+unsubscr...@googlegroups.com. >>> For more options, visit https://groups.google.com/d/optout. >>> >> >> > -- 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/d/optout.