2013-07-07 94 views

回答

4

想出如何使這項工作(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 

這就是它!

+1

不錯! :-)恭喜! – shalakhin

3

你有下一個選擇:

  • 我一直認爲這是可能的(和工頭本地與& &爲我寫你的命令python manage.py clear_cacheProcfile啓動服務器之前使用它:

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

這個答案似乎是有前途的,但我無法得到領班承認在同一行(以下簡稱「網:蟒蛇manage.py clearcache && ...」的解決方案)兩個命令。我如何解釋這一點? – fangsterr

+0

我剛纔用'網絡製作的Procfile:蟒蛇manage.py clear_cache && gunicorn myapp.wsgi'並提出'工頭start'。有用。工頭給你什麼錯誤? – shalakhin

+0

我的有點不同。 「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