2013-07-07 3 views
2

Я использую кеш Redis (django-redis) для моего приложения Django, размещенного на Heroku. Чтобы быть более конкретным (хотя я не думаю, что это имеет отношение к вероятному решению), я использую дополнение Redis Cloud.Django Heroku Clear Cache при развертывании

Как очистить кеш при развертывании? Я ищу ответ, похожий на Clear Memcached on Heroku Deploy, за исключением Django, а не Rails.

ответ

4

Разобрался, как сделать эту работу (сочетание ответа 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:

Создать скрипт (например, скрипты/веб), чтобы поместить команду в [от корневого уровня проекта]. Например, я предваряется мой веб-команду PROCFILE с 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 

Вот оно!

+1

Ницца! :-) Поздравления! – shalakhin

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() 
+0

Этот ответ кажется многообещающим, за исключением того, что я не могу заставить мастера распознать две команды в одной строке (решение «web: python manage.py clearcache && ...»). Как мне объяснить это? – fangsterr

+0

Я только что сделал Procfile с помощью 'web: python manage.py clear_cache && gunicorn myapp.wsgi' и сделал« запуск мастера ». Оно работает. Какой мастер по ошибке дает вам? – shalakhin

+0

мины немного разные. "web: python manage.py clearcache && newrelic-admin run-program gunicorn doorstep.wsgi -b 0.0.0.0:$PORT -w 5 --preload" дает мне ошибку "manage.py: ошибка: нет такой опции: - b " – fangsterr

Смежные вопросы