Where is the cache stored, and which Lock class are you using?
Application globals are tricky in Pyramid. One place you can store
them is a registry attribute (request.registry.myattr); I use this for
SQLAlchemy engines. Or you could stuff it into the configuration
settings at startup. The registry has a native API for global objects
but it's kind of complicated; 'pyramid_services' makes it more
intuitive. But that may be overkill for one simple object.

If your cache lookup is in view code; I'd encapsulate it into a
request method, to decouple the views from the cache location.

Logging entries usually include the module name, so that's not
unusual. What's unusual is it's not fully qualified (
'myapp.lib.agent_cache'). You may have disabled displaying the parents
in the logging configuration, or more worrisome, it may be importing
it as a top-level import or switching between two different
'agent_cache' modules. You can print or log ``repr(agent_cache)`` to
see where it comes from and its parents.

On Mon, Oct 11, 2021 at 1:35 AM Gerhard Schmidt <[email protected]> wrote:
>
> Hi,
>
> today I encountered a very strange problem with request methods.
>
> <--- code --->
>
> cache = {'agents': set(),
>           'time': 0.0}
> cache_lock = Lock()
>
>
> def in_agent_cache(request):
>      with cache_lock:
>         return request.user_agent in cache['agents']
>
> <--- end code --->
>
> If I call the method directly, everything works fine.
>
> if I register the method as a request method and call it via
> request.in_agent_cache() the dict is always the default version, the set
> empty and time .
>
> If I move the dict and lock to another file and import it. Everything
> works even as a request method.
>
> The log messages are also recorded under a wrong module
>
> 2021-10-11 10:29:33,153 INFO  [agent_cache:96][waitress-0]
> in_agent_cache called
>
> agent_cache is the name of the py file and not the package it's in.
>
> Any hint if I'm doing something wrong.
>
> Regards
>      Estartu
>
>
>
>
>
>
> --
> 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 [email protected].
> To view this discussion on the web visit 
> https://groups.google.com/d/msgid/pylons-discuss/90ae76af-8406-3ec5-b490-2f4af254431d%40augusta.de.



-- 
Mike Orr <[email protected]>

-- 
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 [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/pylons-discuss/CAH9f%3DurSt7Vh247P-crNpyt4A1BdmOJMbL1AoU0DeKaytar2pg%40mail.gmail.com.

Reply via email to