2015-12-13 2 views
0

Я пытаюсь использовать memcached для моего Django 1.8.5 (под python3).Django memcached library for python3

На данный момент я пробовал pylibmc и python-memcached.

pylibmc дает мне эту ошибку

libmemcached/get.cc:87 Assertion "ptr->query_id == query_id +1" failed for function "memcached_get_by_key" likely for "Programmer error, the query_id was not incremented." 
Number of stack frames obtained: 24 
    /usr/lib/x86_64-linux-gnu/libmemcached.so.10 : memcached_get_by_key()+0x283 
    /usr/lib/x86_64-linux-gnu/libmemcached.so.10 : memcached_get()+0x1f 
    /home/francesco/virtualenvs/TeamCompSite/lib/python3.4/site-packages/_pylibmc.cpython-34m.so :()+0x61fd 
    /home/francesco/virtualenvs/TeamCompSite/bin/python : PyEval_EvalFrameEx()+0x3f6a 
    /home/francesco/virtualenvs/TeamCompSite/bin/python : PyEval_EvalCodeEx()+0x15b 
    /home/francesco/virtualenvs/TeamCompSite/bin/python : PyEval_EvalFrameEx()+0x4490 
    /home/francesco/virtualenvs/TeamCompSite/bin/python : PyEval_EvalCodeEx()+0x15b 
    /home/francesco/virtualenvs/TeamCompSite/bin/python : PyEval_EvalFrameEx()+0x4490 
/home/francesco/virtualenvs/TeamCompSite/bin/python() [0x56a7ec] 
    /home/francesco/virtualenvs/TeamCompSite/bin/python : PyObject_Call()+0x3a 
    /home/francesco/virtualenvs/TeamCompSite/bin/python : PyEval_EvalFrameEx()+0x1e2f 
/home/francesco/virtualenvs/TeamCompSite/bin/python() [0x56a7ec] 
    /home/francesco/virtualenvs/TeamCompSite/bin/python : PyObject_Call()+0x3a 
    /home/francesco/virtualenvs/TeamCompSite/bin/python : PyEval_EvalFrameEx()+0x1e2f 
    /home/francesco/virtualenvs/TeamCompSite/bin/python : PyEval_EvalFrameEx()+0x403d 
    /home/francesco/virtualenvs/TeamCompSite/bin/python : PyEval_EvalFrameEx()+0x403d 
/home/francesco/virtualenvs/TeamCompSite/bin/python() [0x56a7ec] 
/home/francesco/virtualenvs/TeamCompSite/bin/python() [0x4e21bd] 
    /home/francesco/virtualenvs/TeamCompSite/bin/python : PyObject_Call()+0x3a 
    /home/francesco/virtualenvs/TeamCompSite/bin/python : PyEval_CallObjectWithKeywords()+0x36 
/home/francesco/virtualenvs/TeamCompSite/bin/python() [0x5be452] 
    /lib/x86_64-linux-gnu/libpthread.so.0 :()+0x8182 
    /lib/x86_64-linux-gnu/libc.so.6 : clone()+0x6d 

выглядит как очень редкая вещь, как поиск на Google я нашел только pylibmc: 'Assertion "ptr->query_id == query_id +1" failed for function "memcached_get_by_key"'

К сожалению, я не могу изменить, как Джанго обрабатывает Memcached LIB ..

Затем я попробовал python-memcached

На этот раз я получил

Unhandled exception in thread started by <function check_errors.<locals>.wrapper at 0x7f00537e9f28> 
Traceback (most recent call last): 
    File "/home/francesco/virtualenvs/TeamCompSite/lib/python3.4/site-packages/django/utils/autoreload.py", line 229, in wrapper 
    fn(*args, **kwargs) 
    File "/home/francesco/virtualenvs/TeamCompSite/lib/python3.4/site-packages/django/core/management/commands/runserver.py", line 107, in inner_run 
    autoreload.raise_last_exception() 
    File "/home/francesco/virtualenvs/TeamCompSite/lib/python3.4/site-packages/django/utils/autoreload.py", line 252, in raise_last_exception 
    six.reraise(*_exception) 
    File "/home/francesco/virtualenvs/TeamCompSite/lib/python3.4/site-packages/django/utils/six.py", line 658, in reraise 
    raise value.with_traceback(tb) 
    File "/home/francesco/virtualenvs/TeamCompSite/lib/python3.4/site-packages/django/utils/autoreload.py", line 229, in wrapper 
    fn(*args, **kwargs) 
    File "/home/francesco/virtualenvs/TeamCompSite/lib/python3.4/site-packages/django/__init__.py", line 18, in setup 
    apps.populate(settings.INSTALLED_APPS) 
    File "/home/francesco/virtualenvs/TeamCompSite/lib/python3.4/site-packages/django/apps/registry.py", line 115, in populate 
    app_config.ready() 
    File "/media/francesco/A6528DA1528D76B9/Programmazione/Python/Spark/team_comp_site/teamcomp/apps.py", line 19, in ready 
    client.get_stats() 
    File "/home/francesco/virtualenvs/TeamCompSite/lib/python3.4/site-packages/memcache.py", line 338, in get_stats 
    stats = line.split(' ', 2) 
TypeError: 'str' does not support the buffer interface 

Похоже, питон-Memcached поддерживает только python2 (мой плохой для не проверки, прежде чем руки)

Давайте попробуем Python3-Memcached

Нагрузки сайт !!!

Просто, чтобы показать мне знакомую страницу ошибки

Exception Value: local variable 'val' referenced before assignment 

Exception Location:  /home/xxxxx/virtualenvs/xxxx/lib/python3.4/site-packages/memcache.py in _recv_value, line 1026 
Python Executable: /home/xxxxx/virtualenvs/xxxxx/bin/python 
Python Version:  3.4.3 

Итак, каковы варианты Python3 (.4) Memcached клиентов?

ответ

0

Использование python3-memcached позволяет просто запускать более чистую строку и управление байтовым буфером.

В строке юникода python2 были байтовые массивы и строка были ascii или цепочкой из \uXXXX символов. Преобразование между строкой ascii в bytestring было тихим, но из bytestring в string explicite.

В python3: тип unicode больше не существует. У вас только str и голый bytearray. Из-за этого все должно быть явным, и поэтому все более предсказуемо. Библиотека python-memcached была настолько переделана, что была адаптирована к этому новому - и более простому способу работы со строками в py3.