2

Heroku でホストされている Django アプリに Redis キャッシュ (django-redis) を使用しています。より具体的に言うと (考えられる解決策には関係ないと思いますが)、Redis Cloud アドオンを使用しています。

デプロイ時にキャッシュをクリアするにはどうすればよいですか? RailsではなくDjangoを除いて、Clear Memcached on Heroku Deployに似た答えを探しています。

4

2 に答える 2

6

この作業を行う方法を考え出しました (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

それでおしまい!

于 2013-07-07T20:03:08.753 に答える
3

次のオプションがあります。

  • 私はいつもそれが可能だと思っていました(そして、フォアマンは && で私のためにローカルで働いていました。コマンドを書いて、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()
于 2013-07-07T08:43:11.473 に答える