簡體   English   中英

如何在Django中設置Memcached檢索超時

[英]How to set Memcached retrieval timeout in Django

如何在Django中更改Memcached / Elasticache緩存后端的檢索超時?

我正在使用亞馬遜的Elasticache在Django中緩存內容,我經常看到如下錯誤:

  File "/usr/local/myproject/.env/lib/python2.7/site-packages/django/template/defaulttags.py", line 285, in render
    return nodelist.render(context)
  File "/usr/local/myproject/.env/lib/python2.7/site-packages/django/template/base.py", line 830, in render
    bit = self.render_node(node, context)
  File "/usr/local/myproject/.env/lib/python2.7/site-packages/django/template/base.py", line 844, in render_node
    return node.render(context)
  File "/usr/local/myproject/.env/lib/python2.7/site-packages/django/templatetags/static.py", line 109, in render
    url = self.url(context)
  File "/usr/local/myproject/.env/lib/python2.7/site-packages/django/contrib/staticfiles/templatetags/staticfiles.py", line 12, in url
    return staticfiles_storage.url(path)
  File "/usr/local/myproject/.env/lib/python2.7/site-packages/django/contrib/staticfiles/storage.py", line 136, in url
    hashed_name = self.cache.get(cache_key)
  File "/usr/local/myproject/.env/lib/python2.7/site-packages/django/core/cache/backends/memcached.py", line 64, in get
    val = self._cache.get(key)
Error: error 31 from memcached_get(myproject:1:staticfiles:27e4bc0): A TIMEOUT OCCURRED

我已經嘗試增加我的Elasticache集群中的節點數量,但這沒有任何效果。 我的下一個想法是增加memcached檢索的超時,但Django文檔似乎沒有為此提供選項。

有一個“TIMEOUT”選項,但這似乎定義了內容到期之前的默認時間,而不是HTTP請求到memcached服務器的超時。

我使用的解決方案是將我的Django緩存后端切換到django-ft-cache ,這是標准memcache后端的容錯版本。 所以現在,當發生周期性超時時,緩存只是繞過非緩存檢索媒體而不是拋出500錯誤。

django沒有設置這樣做。 這樣的東西應該有效,盡管它很臟。 確保在創建緩存之前執行以下操作:

import memcached; memcached._SOCKET_TIMEOUT = whatever_you_want_it_to_be;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM