현재 클라이언트 - 서버 Python 프로그램이 있는데, 현재 서버에 데이터를 보내는 두 개의 클라이언트로 실행 중입니다. 나는 그것을 실행할 때 한 클라이언트를 시작한 다음 몇 초 후에 다른 클라이언트를 시작합니다.Python DictWriter가 다중 클라이언트 응용 프로그램에서 특정 행을 작성하지 않습니다.
문제는 클라이언트가 완료된 후 데이터베이스를 보면 프로그램 출력 (stdout)이이를 보여 주지만 두 번째 클라이언트 (마지막으로 시작한 클라이언트)에 대한 항목 만 볼 수 있다는 것입니다. 두 클라이언트 모두에서 오는 데이터에 대해 CSV에 쓰는 코드 섹션을 지나쳐야합니다. 두 클라이언트는 모두 10 초 간격으로 정보를 보냅니다. 다음은 서버에 메시지를 걸리는 코드는이 사건에서 문제의 csv 파일에 기록하는 위치 strs [0] == '\'CPU '.
def serverLoop(conn):
with open(database, 'wb') as csvfile:
fieldnames = ['cpu', 'pid', 'memory']
writer = csv.DictWriter(csvfile, fieldnames=fieldnames,
quotechar='|', quoting=csv.QUOTE_MINIMAL)
writer.writeheader()
while 1:
data = conn.recv(1024)
#print 'data is', repr(data)
#if repr(data) == COMPLETE: break
conn.send(data)
strs = repr(data).split()
if strs[0] == '\'Thread':
t = strs[9]
process = strs[4]
logging.info('Heartbeat from thread with pid %s running at %s seconds' % (process, t))
if strs[0] == '\'cpu':
cpuData = strs[1] + ', ' + strs[2]
print 'cpu data received'
writer.writerow({'cpu': cpuData})
print cpuData
print 'wrote to db'
내가 파이썬 2.7를 사용하고 있습니다 우분투.
죄송합니다. 위의 기능 만 CSV에 쓰고 있고 두 개의 다른 클라이언트의 데이터를 수신하고 있습니다. –
사실, 나는 당신의 요지를 보았습니다, 응답에 감사드립니다. –