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.

Reply via email to