通过Django视图查看memcache统计信息会导致超时

时间:2012-03-04 20:09:28

标签: python timeout memcached

我在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 :(得分:0)

没关系,它应该是:

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

不结束:

if line[0] == "END":