Store IRCSocket connect_time, show bytes read/write per second in stats.py

This commit is contained in:
jesopo 2019-05-24 17:32:59 +01:00
parent 503969abfd
commit a3a2c1e5a4
2 changed files with 7 additions and 1 deletions

View file

@ -49,6 +49,7 @@ class Module(ModuleManager.BaseModule):
return {"networks": networks, "channels": channels, "users": users}
def _server_stats(self, server):
connected_seconds = time.time()-server.connect_time
return {
"hostname": server.connection_params.hostname,
"port": server.connection_params.port,
@ -58,7 +59,10 @@ class Module(ModuleManager.BaseModule):
server.nickname, server.username, server.hostname),
"users": len(server.users),
"bytes-written": server.socket.bytes_written,
"bytes-written-per-second":
server.socket.bytes_written/connected_seconds,
"bytes-read": server.socket.bytes_read,
"bytes-read-per-second": server.socket.bytes_read/connected_seconds,
"channels": {
c.name: self._channel_stats(c) for c in server.channels
},

View file

@ -37,7 +37,8 @@ class Socket(IRCObject.Object):
self.last_read = time.monotonic()
self.last_send = None # type: typing.Optional[float]
self.connected_ip = None
self.connected_ip = None # type: typing.Optional[str]
self.conncect_time: float = -1
def fileno(self) -> int:
return self.cached_fileno or self._socket.fileno()
@ -61,6 +62,7 @@ class Socket(IRCObject.Object):
if self._tls:
self._tls_wrap()
self.connect_time = time.time()
self.connected_ip = self._socket.getpeername()[0]
self.cached_fileno = self._socket.fileno()
self.connected = True