/ / Django में मेमकैड पुनर्प्राप्ति टाइमआउट कैसे सेट करें - पायथन, django, कैशिंग, memcached, amazon-elasticache

Django में मेमकैड पुनर्प्राप्ति टाइमआउट कैसे सेट करें - पायथन, django, कैशिंग, memcached, अमेज़ॅन-लोचदार

आप के लिए पुनर्प्राप्ति टाइमआउट कैसे बदलते हैं Memcached / लोचदार कैशिंग बैकएंड Django में?

मैं 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

मैंने अपने लोचदार क्लस्टर में नोड्स की संख्या में वृद्धि करने की कोशिश की है, लेकिन इसका कोई प्रभाव नहीं पड़ा है। मेरा अगला विचार memcached पुनर्प्राप्ति के लिए टाइमआउट बढ़ाने के लिए था, लेकिन Django दस्तावेज़ ऐसा नहीं लगता है कि इसके लिए एक विकल्प प्रदान करें।

एक "TIMEOUT" विकल्प है, लेकिन ऐसा लगता है कि सामग्री के बाद डिफ़ॉल्ट समय को परिभाषित किया गया है समय सीमा समाप्त, memcached सर्वर के HTTP अनुरोध का समय समाप्ति नहीं।

उत्तर:

उत्तर № 1 के लिए 6

जिस समाधान के साथ मैं गया था वह मेरे डीजेगो कैश बैकएंड को स्विच करना था Django-फुट-कैश, मानक memcache बैकएंड का एक गलती सहनशील संस्करण। तो अब, जब आवधिक टाइमआउट होता है, तो कैश केवल 500 त्रुटि फेंकने के बजाय मीडिया के गैर-कैश पुनर्प्राप्ति को छोड़ देता है।


जवाब के लिए 4 № 2

ऐसा करने के लिए django में कोई सेटिंग नहीं है। इस तरह कुछ काम करना चाहिए, यद्यपि यह काफी गंदे है। कैश बनने से पहले सुनिश्चित करें कि निम्नलिखित निष्पादित किया गया है:

import memcached; memcached._SOCKET_TIMEOUT = whatever_you_want_it_to_be;