2009-07-08 5 views
4

L'utilisation du cache de Django avec locmem (avec des classes Python simples comme valeurs stockées dans lists/tuples/maps) fonctionne parfaitement mais ne fonctionne pas avec memcached.Pourquoi le cache de Django fonctionne-t-il avec locmem mais échoue avec memcached?

Seule une fraction des clés (en dépit de l'allocation de mémoire suffisante et des délais d'attente importants) se retrouve dans memcached, et aucune d'entre elles ne semble avoir de valeur associée.

Lorsqu'elles sont récupérées, aucune valeur n'est renvoyée et elles sont supprimées du cache. Forcer une valeur de "hi" permet de récupérer ceux qui apparaissent dans le cache, mais ne tient pas compte du fait que la plupart des clés ne sont simplement pas là.

Questions:

  1. Pourquoi seulement certaines touches se retrouvent dans memcached et d'autres pas, même lorsque toutes les valeurs sont réglées sur « salut »?
  2. Est-il possible d'activer plus de journalisation ou de générer des rapports d'erreur? (Tout semble échouer silencieusement)
  3. Pourquoi les classes Python sérialisent-elles correctement vers locmem mais ne se retrouvent pas dans Memcached?

Répondre

3

Pour en savoir ce qui se passe, exécutez memcached -vv 2>/tmp/mc_debug_log (je suppose que vous êtes une sorte de système unixy) et l'exécuter pour une courte temps - vous trouverez des informations détaillées dans ce fichier journal quand tu as fini. Selon l'interface Python à memcached que vous utilisez, il se peut que seules les chaînes soient prises en charge en tant que valeurs (comme dans le module StringClient dans cmemcache) ou que tous les objets décollables le soient (avec le surcoût de décapage et de dépilage de bien sûr), comme dans le module client plus général dans le même cmemcache, memcache de GAE, et python-memcached; Si vous ne pouvez utiliser les chaînes que comme valeurs, vous utilisez probablement une interface du premier type?

Questions connexes