Просмотр статистики memcache через представление Django вызывает тайм-аут - PullRequest
0 голосов
/ 05 марта 2012

У меня есть следующий фрагмент в представлении Django для отображения статистики memcache:

import datetime, re, memcache
host = memcache._Host(settings.CACHES['default']['LOCATION'])
host.connect()
host.send_cmd("stats")
output = ''
while 1:
    line = host.readline()
    if line[0] == "END":
        break
    output += line + "\n"
host.close_socket()
return output

Когда я пытаюсь это сделать, я получаю тайм-аут в операторе readline ().

Попытка этого кода через manage.py shell работает нормально, однако.

Это работает в представлении, если я использую этот фрагмент вместо:

p2 = subprocess.Popen(["echo \"stats\" | nc " + settings.CACHES['default']['LOCATION'].replace(':', ' ')], stdout = subprocess.PIPE, shell=True)
return p2.stdout.read()

Я могу просто проигнорировать время ожидания для предыдущего кода и использовать метод подпроцесса, но я действительно заинтересован взная, что может быть не так.Кто-нибудь когда-нибудь сталкивался с этой проблемой?

1 Ответ

0 голосов
/ 05 марта 2012

Неважно, оно должно выглядеть так:

if line.strip() == "END":

конец не:

if line[0] == "END":
...