Tôi có python-memcached (1.57) và django-cần tây (3.1.17), cần tây (3.1.20) và python 3.5. Tôi luôn luôn nhận được báo lỗi dưới đây khi tôi cố gắng thực hiện http://docs.celeryproject.org/en/latest/tutorials/task-cookbook.html#ensuring-a-task-is-only-executed-one-at-a-timemột đối tượng giống như byte là bắt buộc, không phải 'str' - lỗi
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'
Lỗi này rất có thể liên quan đến phiên bản python của bạn. Hãy thử chuyển đổi thành byte bằng cách sử dụng 'byte (string, encoding =" UTF-8 ")'. –
Thử sử dụng 'python3-memcached' –
@DerekKwok' python3-memcached> = 1.51' hoặc được neo vào 1.51 đặc biệt quan trọng? – tdelaney