2016-02-07 13 views
6

मेरे पास पाइथन-मेमकैच (1.57) और डीजेंगो-सेलेरी (3.1.17), अजवाइन (3.1.20) और पायथन 3.5 है। मैं हमेशा नीचे जब मैं कोशिश त्रुटि को लागू करने के http://docs.celeryproject.org/en/latest/tutorials/task-cookbook.html#ensuring-a-task-is-only-executed-one-at-a-timeएक बाइट्स-जैसी ऑब्जेक्ट की आवश्यकता है, 'str' नहीं - त्रुटि

Task tasks.live_task[a2ed1faf-0fce-4855-a206-40f2fbdae1a8] raised unexpected: TypeError("a bytes-like object is required, not 'str'",) 
Traceback (most recent call last): 
File "/app/current/venv/lib/python3.5/site-packages/celery/app/trace.py", line 240, in trace_task 
R = retval = fun(*args, **kwargs) 
File "/app/current/venv/lib/python3.5/site-packages/celery/app/trace.py", line 438, in __protected_call__ 
return self.run(*args, **kwargs) 
File "/app/current/src/helps.py", line 62, in wrapper 
if acquire(): 
File "/app/current/src/helps.py", line 57, in acquire 
return cache.add(id, "true", time_out) 
File "/app/current/venv/lib/python3.5/site-packages/django/core/cache/backends/memcached.py", line 80, in add 
return self._cache.add(key, value, self.get_backend_timeout(timeout)) 
File "/app/current/venv/lib/python3.5/site-packages/memcache.py", line 633, in add 
return self._set("add", key, val, time, min_compress_len, noreply) 
File "/app/current/venv/lib/python3.5/site-packages/memcache.py", line 983, in _set 
server, key = self._get_server(key) 
File "/app/dashboard/current/venv/lib/python3.5/site-packages/memcache.py", line 413, in _get_server 
serverhash = serverHashFunction(str(serverhash) + str(i)) 
File "/app/current/venv/lib/python3.5/site-packages/memcache.py", line 65, in cmemcache_hash 
(((binascii.crc32(key) & 0xffffffff) 
TypeError: a bytes-like object is required, not 'str' 
+1

त्रुटि आपके पायथन संस्करण से संबंधित होने की संभावना है। 'बाइट्स (स्ट्रिंग, एन्कोडिंग =" यूटीएफ -8 ") का उपयोग करके बाइट्स में कनवर्ट करने का प्रयास करें। –

+1

'python3-memcached' –

+0

@DerekKwok' python3-memcached> = 1.51' का उपयोग करने का प्रयास करें या 1.51 विशेष रूप से महत्वपूर्ण है? – tdelaney

उत्तर

5

python-memchachedpython 3.5 पर समर्थित नहीं है आप python-memchached उपयोग किया है, निम्न कमांड तुम्हारी मदद करेगा मिलता है।

pip uninstall python-memcached 
pip install python3-memcached 
+1

का उपयोग करने के लिए कोई विशिष्ट कारण नहीं है, यह वास्तव में एक जाल है। python3-memcached काम करता है लेकिन यह बंद हो गया है और आधिकारिक पायथन-memcached केवल utf-8 एन्कोडेड डेटा के साथ काम करता है। माना जाता है कि इसके लिए एक फिक्स है लेकिन मेरे लिए यह अभी भी उड़ा है: https://github.com/linsomniac/python-memcached/issues/80 –

+0

यह सही है। पायथन 3-memcached बहिष्कृत है। यह सिर्फ अजगर-memcached का एक py3 संगतता बंदरगाह था जो तब से py23 जोड़ा गया है। –

संबंधित मुद्दे

 संबंधित मुद्दे