[PYTHON] J'ai essayé d'utiliser Firebase pour le serveur de cache de Django

Contexte d'utilisation

Le produit exploité par la société utilise AWS Redis comme serveur de cache, mais il est coûteux pour mon propre usage et n'est accessible que depuis le VPC (bien que cela puisse être fait par proxy). C'est un problème, j'ai donc cherché quelque chose d'autre qui pourrait être utilisé comme serveur de cache.

Méthode de mise en cache facile

Mettez-le en mémoire

Je pense que le moyen le plus simple est de le mettre en mémoire locale, ce qui est bien pour les tests, mais souvent pas assez pour la production.

CACHES = {
    'default': {
        'BACKEND': 'django.core.cache.backends.locmem.LocMemCache',
        'LOCATION': 'default',
        'TIMEOUT': 24 * 60 * 60
    }

Mettre sur DB

Créez une table dans la base de données, créez-y des données de cache et allez la lire. Naturellement, la charge sur la base de données augmentera et la taille de la base de données augmentera.

CACHES = {
    'default': {
        'BACKEND': 'django.core.cache.backends.db.DatabaseCache',
        'LOCATION': 'cache_table',
        'TIMEOUT': 24 * 60 * 60
    }
}

Il est essentiel de faire une table.

python manage.py createcachetable

Pensez à ce que vous pouvez faire avec Firebase

Je pensais qu'AWS ne pouvait pas être utilisé et que la mémoire et la base de données seraient difficiles, ce qui était un service Firebase que j'utilise souvent ces jours-ci. En regardant Firebase, je me demande s'il y a des gens qui créent des packages. https://github.com/christippett/django-firebase-cache

J'ai donc décidé d'utiliser ce package.

introduction

C'est un peu plus compliqué à utiliser que le simple ci-dessus.

Installation du package.

pip install django-firebase-cache

Situé dans CACHES.

CACHES = {
    'default': {
        'BACKEND': 'django_firebase_cache.FirestoreCache',
        'LOCATION': 'collection_name',
        'TIMEOUT': 24 * 60 * 60
    }
}

Définissez le fichier d'informations d'identification Firebase et transmettez-le via le chemin. J'étais un peu confus ici, mais je dois passer le chemin vers la variable d'environnement GOOGLE_APPLICATION_CREDENTIALS comme suit. La documentation n'est pas du tout complète ...

os.environ['GOOGLE_APPLICATION_CREDENTIALS'] = './client_credentials.json'

Ceci termine les réglages. Maintenant, lorsque vous le déplacez réellement, vous pouvez voir que les données sont stockées dans FireBase FireStore.

Un piège d'ici ...

Bien que l'encaissement soit devenu possible jusqu'à présent, la limite supérieure du quota gratuit a été atteinte de manière inattendue bientôt. .. Dans ce cas, bien sûr, une erreur est renvoyée, mais le site est mort depuis plusieurs heures sans aucun traitement pour éviter l'erreur. ..

Payons-le ou gérons l'erreur.

Recommended Posts

J'ai essayé d'utiliser Firebase pour le serveur de cache de Django
J'ai essayé d'utiliser paramétré
J'ai essayé d'utiliser argparse
J'ai essayé d'utiliser la mimesis
J'ai essayé d'utiliser anytree
vprof - J'ai essayé d'utiliser le profileur pour Python
J'ai essayé d'utiliser aiomysql
J'ai essayé d'utiliser Summpy
J'ai essayé d'utiliser coturn
J'ai essayé d'utiliser Pipenv
J'ai essayé d'utiliser matplotlib
J'ai essayé d'utiliser "Anvil".
J'ai essayé d'utiliser Hubot
J'ai essayé d'utiliser ESPCN
J'ai essayé d'utiliser openpyxl
J'ai essayé d'utiliser Ipython
J'ai essayé d'utiliser PyCaret
J'ai essayé d'utiliser cron
J'ai essayé d'utiliser ngrok
J'ai essayé d'utiliser Jupyter
J'ai essayé d'utiliser doctest
J'ai essayé d'utiliser du folium
J'ai essayé d'utiliser jinja2
J'ai essayé d'utiliser du folium
J'ai essayé d'utiliser la fenêtre de temps
[Python] J'ai essayé d'exécuter un serveur local en utilisant flask
[J'ai essayé d'utiliser Pythonista 3] Introduction
J'ai essayé d'utiliser easydict (mémo).
J'ai essayé la reconnaissance faciale avec Face ++
J'ai essayé d'utiliser RandomForest
J'ai essayé d'utiliser BigQuery ML
J'ai essayé d'utiliser Amazon Glacier
J'ai essayé d'utiliser git inspector
J'ai essayé d'utiliser magenta / TensorFlow
J'ai essayé d'utiliser AWS Chalice
J'ai essayé d'utiliser l'émojinateur Slack
J'ai essayé de démarrer le serveur de Django avec VScode au lieu de Pycharm
J'ai essayé d'utiliser Tensorboard, un outil de visualisation pour l'apprentissage automatique
Notes diverses sur l'utilisation de python pour les projets
J'ai essayé de sortir le journal d'accès au serveur en utilisant Node.js
[Pour les débutants] J'ai essayé d'utiliser l'API Tensorflow Object Detection
J'ai essayé d'utiliser Rotrics Dex Arm # 2
J'ai essayé d'utiliser Rotrics Dex Arm
J'ai essayé d'utiliser GrabCut d'OpenCV
J'ai essayé d'utiliser Thonny (Python / IDE)
J'ai essayé de communiquer avec le client serveur en utilisant tmux
J'ai essayé l'apprentissage par renforcement avec PyBrain
J'ai essayé l'apprentissage en profondeur avec Theano
J'ai essayé d'utiliser le notebook jupyter d'une manière ou d'une autre
[Kaggle] J'ai essayé le sous-échantillonnage en utilisant un apprentissage déséquilibré
J'ai essayé de photographier une vague de tortue en utilisant OpenPose
J'ai essayé d'utiliser l'API checkio
J'ai essayé le traitement asynchrone en utilisant asyncio
J'ai essayé d'utiliser Kwant, un module python pour le calcul du transport quantique
J'ai essayé d'utiliser GLM (modèle linéaire généralisé) pour les données de prix des actions
J'ai essayé d'utiliser Amazon SQS avec django-celery