Memcached-MemcacheIllegalInputError - Значения данных должны быть бинарными: кодек 'ascii' не может кодировать символы в позиции 2-5: ordinal not in range(128
Я провожу некоторые тесты с memcached в моем проекте django, чтобы понять, могу ли я получить от него пользу. Но я застрял на кэшировании символов юникода. Я прочитал много статей об этом, но так и не смог понять, как мне заставить его работать. Вот мой блок кода:
def cache(request):
client = Client("127.0.0.1:11211")
cache_key = '123' # needs to be unique
cache_time = 86400 # time in seconds for cache to be valid
data = client.get(cache_key) # returns None if no key-value pair
if not data:
print("setting cache")
#data contains unicode characters - Throws an error
datafromdb = Subject.objects.all()
#unicode characters - Throws an error
unicodestr="abçüıö"
#encoded unicode characters - Working fine
encodedunicodestr=str.encode("abçüıö")
client.set(cache_key,unicodestr , cache_time)
else:
print("getting from cache")
return HttpResponse(data)
Если я использую str.encode для текстовых значений, то все работает нормально и данные можно кэшировать.
Но если я получаю данные из базы данных (postgres) и эти данные содержат юникод, memcached выкидывает ошибку.
Мне интересно, есть ли способ использовать str.unicode в моих наборах/списках и т.д., которые возвращаются из базы данных, или что-то еще, может быть.