我在Heroku上託管的Django應用使用Redis緩存(django-redis)。爲了更具體(儘管我認爲它與可能的解決方案無關),我使用的是Redis Cloud附加組件。部署Django Heroku清除緩存
如何在部署時清除緩存?我正在尋找類似於Clear Memcached on Heroku Deploy的回答,除了Django,不是Rails。
我在Heroku上託管的Django應用使用Redis緩存(django-redis)。爲了更具體(儘管我認爲它與可能的解決方案無關),我使用的是Redis Cloud附加組件。部署Django Heroku清除緩存
如何在部署時清除緩存?我正在尋找類似於Clear Memcached on Heroku Deploy的回答,除了Django,不是Rails。
想出如何使這項工作(MagnusGraviti的回答的組合,並從IRC的Heroku一些幫助)。
第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
這就是它!
你有下一個選擇:
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()
這個答案似乎是有前途的,但我無法得到領班承認在同一行(以下簡稱「網:蟒蛇manage.py clearcache && ...」的解決方案)兩個命令。我如何解釋這一點? – fangsterr
我剛纔用'網絡製作的Procfile:蟒蛇manage.py clear_cache && gunicorn myapp.wsgi'並提出'工頭start'。有用。工頭給你什麼錯誤? – shalakhin
我的有點不同。 「web:python manage.py clearcache && newrelic-admin運行程序gunicorn doorstep.wsgi -b 0.0.0.0:$PORT -w 5 --preload」給我錯誤「manage.py:error:no such option: - b」 – fangsterr
不錯! :-)恭喜! – shalakhin