2015-10-30 2 views
2

Je prévois d'utiliser django-cachalot avec memcached backend pour la mise en cache des requêtes dans mon projet.Ajouter dynamiquement nouveau serveur Memcached sans redémarrer Django

Je dispose de cette configuration sur un Elastic Beanstalk, qui peut être mis à l'échelle ou réduit, en ajoutant ou en supprimant des instances EC2. Actuellement, lorsque memcached démarre sur une instance, j'ajoute l'adresse IP de cette instance à la base de données.

Le client pylibmcmemcached que je crée lit la base de données de temps en temps pour les adresses IP du serveur et crée un nouveau client si les adresses IP du serveur ont changé ou si de nouvelles adresses IP ont été ajoutées. Comment puis-je ajouter dynamiquement des serveurs au memcached backend du cache django? ou comment définir le memcached client django utilise manuellement?

Répondre

0

Cela représente probablement beaucoup d'efforts pour un gain minime. Gardez à l'esprit que django distribue les objets que vous cachez entre les différents serveurs memcached que vous avez définis. Ainsi, quand on est retiré de la considération par l'autoscaling, tous les objets qui s'y trouvent seront perdus.

Par défaut, django ne prend pas en charge l'ajout dynamique de nouveaux serveurs memcached à la liste. Pour le faire fonctionner, vous devrez créer un backend de cache personnalisé en modifiant la valeur par défaut memcached backend

+0

C'est exactement ce que je fais. c'est-à-dire créer un backend de cache personnalisé. J'ai gardé 'num_replicas = 4' alors' memcached' crée des copies du cache et nous perdons le cache minimum pendant la mise à l'échelle automatique – Optimus