Python 리메일러 서버에 구현된 대역폭을 측정하고 싶습니다. 즉, 서버가 초당 처리하는 바이트 수를 측정하고 싶습니다. 그래서 제가 계획한 방법은 고정된 기간 동안(예 : ) 및 300sec
의 수를 측정하는 것 입니다 . 이 기간이 지나면 비율을 계산합니다 . 그러나 이것이 내가 원하는 것인지 확실하지 않습니다. 왜냐하면 비율(보통 1-1.5 정도)을 제공하기 때문입니다. 즉, 일정 기간 동안 받은 모든 메시지 또는 거의 모든 메시지를 처리한다는 의미입니다. 내가 처리한 바이트 수를 측정하고 싶습니다. 누군가 내 대역폭을 측정하는 방법을 조언해 줄 수 있다면 매우 감사하겠습니다.received bytes
sent bytes
bytes_received / bytes_sent
답변1
내 생각에 당신에게 필요한 것은 다음과 같습니다.
바이트_수신= bytes_received300s - bytes_received0s
bytes_sent= bytes_sent300s - bytes_sent0s
total_bytes_processed= 바이트_수신 - 바이트_전송
이는 300초 기간 동안 처리된 총 바이트 수를 제공합니다.
답변2
psutil.net_io_counters()를 사용하여 일정 기간 동안의 대역폭을 계산할 수 있습니다. 0초에 스냅샷을 생성하고 300초에 스냅샷을 생성합니다.
def get_bandwidth():
# Get net in/out
net1_out = psutil.net_io_counters().bytes_sent
net1_in = psutil.net_io_counters().bytes_recv
time.sleep(300) # Not best way to handle getting a value 300 seconds later
# Get new net in/out
net2_out = psutil.net_io_counters().bytes_sent
net2_in = psutil.net_io_counters().bytes_recv
# Compare and get current speed
if net1_in > net2_in:
current_in = 0
else:
current_in = net2_in - net1_in
if net1_out > net2_out:
current_out = 0
else:
current_out = net2_out - net1_out
network = {"traffic_in": current_in, "traffic_out": current_out}
# Return data in bytes
return network