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.

Reply via email to