J'ai un serveur HTTP basé sur django et j'utilise django.core.cache.copy.backends.memcached.MemcachedCache comme bibliothèque client pour accéder à memcache. Je veux savoir si nous pouvons définir un timeout ou quelque chose (disons 500ms.) De sorte que l'appel à memcached renvoie False s'il n'est pas capable d'accéder au cache pendant 500ms. et nous faisons l'appel à la DB. Y a-t-il un tel paramètre pour le faire?Spécification du délai d'attente lors de la récupération/insertion de données dans memcache (django)
Q
Spécification du délai d'attente lors de la récupération/insertion de données dans memcache (django)
3
A
Répondre
0
N'avez pas essayé cela auparavant, mais vous pouvez utiliser le threading et définir un délai d'attente pour l'appel de fonction à mettre en cache. À titre d'exemple, ignorer l'exemple fourni dans le corps principal de ce lien, mais regardez le commentaire de Jim Carroll:
http://code.activestate.com/recipes/534115-function-timeout/
Adaptée pour quelque chose que vous pouvez utiliser:
from threading import Timer
import thread, time, sys
def timeout():
thread.interrupt_main()
try:
Timer(0.5, timeout).start()
cache.get(stuff)
except:
print "Use a function to grab it from the database!"
Je ne J'ai le temps de le tester maintenant, mais je me demande si Django lui-même est threadé, et si c'est le cas, interrompt le thread principal ce que vous voulez vraiment faire? De toute façon, c'est un point de départ potentiel. J'ai cherché une option de configuration qui permettrait cela et n'a rien trouvé.
Questions connexes
- 1. Spécification du délai d'attente pour la cmdlet New-AzureStorageAccount
- 2. délai lors de la liaison de données request.POST pour former dans django
- 3. erreur lors de l'installation memcache
- 4. Haut Cache Mlle De Memcache lors du rangement des sessions
- 5. Django Memcache Sessions Weird Behaviour
- 6. Spécification du type de chaîne lors de la définition de la valeur du paramètre dans Hibernate
- 7. Django i18n: Spécification du contexte. (msgctxt)
- 8. Spécification de l'ordre de tri du modèle associé à Django
- 9. Spécification de la date d'expiration lors du paramétrage des cookies
- 10. session_start(): Echec de l'initialisation du module de stockage: memcache (chemin:/tmp) lors de l'activation de memcache dans yii2
- 11. Données de groupe par Namespace dans memcache
- 12. Pouvez-vous modifier le délai d'expiration memcache de GAE?
- 13. Spécification des couleurs lors de l'utilisation du pcolormesh de matplotlib
- 14. Empêcher le délai du navigateur lors de la réception de grandes quantités de données
- 15. Erreur de syntaxe MySQL lors de la spécification du type de base de données innodb et du jeu de caractères
- 16. HTML Boîtes de saisie trop larges pour les données lors de la spécification de la police
- 17. spécification PATH lors de l'utilisation du package R gdata
- 18. Délai lors du chargement asynchrone des données d'un site Web
- 19. Sécurité lors de la spécification des utilisateurs dans web.config
- 20. Spécification d'une plage lors de l'utilisation du barplot
- 21. Délai d'expiration de la base de données lors de la génération du rapport à partir du Web
- 22. Utilisation du motif de spécification
- 23. Délai d'émission lors de la configuration d'AppWidget
- 24. performances du client memcache php
- 25. Délai d'expiration de la session django dans les 10 secondes
- 26. Spécification des filtres de requête Django au moment de l'exécution
- 27. Spécification du fichier de base de données CakePHP
- 28. Django Memcache: comparer et un ensemble
- 29. Utiliser memcache dans codeigniter
- 30. erreur de syntaxe lors de la spécification DOCTYPE
Il aura en effet des problèmes avec django car il n'est pas threadé. Je regardais le code et le délai de socket est spécifié dans le client python memcache (memcache.py) avec _SOCKET_TIMEOUT. La valeur par défaut est définie sur 3 secondes. C'est un peu trop élevé pour moi. Probablement je vais devoir modifier cette valeur. Mais il est vraiment étrange que le client python memcache ne fournisse aucun moyen de personnaliser ce délai. – Rajat
OUI, vous pouvez spécifier le délai d'expiration. passez le paramètre socket_timeout dans Client() de memcache, comme dans: from memcache import Client; c = Client (['localhost'], socket_timeout = 10.5) –