我在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()
我可以忽略前一代码的超时并使用子进程方法,但我真的很想知道可能出错的地方。有人遇到过这个问题吗?
答案 0 :(得分:0)
没关系,它应该是:
if line.strip() == "END":
不结束:
if line[0] == "END":