Heroku でホストされている Django アプリに Redis キャッシュ (django-redis) を使用しています。より具体的に言うと (考えられる解決策には関係ないと思いますが)、Redis Cloud アドオンを使用しています。
デプロイ時にキャッシュをクリアするにはどうすればよいですか? RailsではなくDjangoを除いて、Clear Memcached on Heroku Deployに似た答えを探しています。
Heroku でホストされている Django アプリに Redis キャッシュ (django-redis) を使用しています。より具体的に言うと (考えられる解決策には関係ないと思いますが)、Redis Cloud アドオンを使用しています。
デプロイ時にキャッシュをクリアするにはどうすればよいですか? RailsではなくDjangoを除いて、Clear Memcached on Heroku Deployに似た答えを探しています。
この作業を行う方法を考え出しました (MagnusGraviti の回答と heroku IRC からの助けの組み合わせ)。
ステップ1:
キャッシュをクリアするカスタム コマンドを作成します。https://docs.djangoproject.com/en/dev/howto/custom-management-commands/を参照するか、django-clear-cache https://github.com/rdegges/django-clear-cacheをインストールしてください。
ステップ2:
[プロジェクトのルート レベルから] コマンドを配置するスクリプト (scripts/web など) を作成します。たとえば、Procfile Web コマンドの前に次のように追加しpython manage.py clearcache &&
ました。
スクリプト/ウェブ
python manage.py clearcache && gunicorn myapp.wsgi -b 0.0.0.0:$PORT -w 5 --preload
ステップ 3:
次に、スクリプトを実行可能に設定する必要があります。私のOSXマシンでは、コマンドは次のとおりでした:
chmod a+x scripts/web
ステップ 4:
コマンドの代わりにスクリプトを実行するように Procfile を変更します。
web: scripts/web
それでおしまい!
次のオプションがあります。
python manage.py clear_cache
サーバーを起動する前にそれを使用して くださいProcfile
:
web: python manage.py clear_cache && gunicorn...
CircleCI を使用している場合はcircle.yml
、デプロイ後にファイルを編集してキャッシュをクリアできます
あなたが書いた場合は、展開後fabfile
に含めることができますpython manage.py clear_cache
。
clear_cache コマンドの例:
`
from django.core.management.base import BaseCommand
from django.core.cache import cache
class Command(BaseCommand):
"""
Command to clear cache
"""
help = "Clear cache"
def handle(self, *args, **options):
cache.clear()