result = 'ok'
elif method == 'server.info':
- result = map(lambda s: { "address":s.address, "version":s.version, "subscriptions":len(s.subscriptions)}, self.dispatcher.request_dispatcher.sessions)
+ result = map(lambda s: { "time":s.time,
+ "address":s.address,
+ "version":s.version,
+ "subscriptions":len(s.subscriptions)},
+ self.dispatcher.request_dispatcher.sessions)
else:
print "unknown method", request
self.address = ''
self.name = ''
self.version = 'unknown'
+ self.time = time.time()
threading.Timer(2, self.info).start()
# Debugging method. Doesn't need to be threadsafe.
r = json.loads(msg).get('result')
if command == 'stop': print r
elif command == 'info':
+ now = time.time()
for item in r:
- print '%15s %3s %7s'%( item.get('address'), item.get('subscriptions'), item.get('version') )
+ print '%15s %3s %7s %.2f'%( item.get('address'), item.get('subscriptions'), item.get('version'), (now - item.get('time')) )
if __name__ == '__main__':
config = create_config()
import SocketServer
import socket
import logging
-import os
+import os, time
import types
import traceback
import sys, threading
session = self.dispatcher.get_session_by_address(session_id)
if not session:
return 'Error: session not found'
+ session.time = time.time()
responses = []
if type(request) is not types.ListType:
raw_response = json.dumps(response)
self.pending_responses.put(response)
+ def stopped(self):
+ with self.lock:
+ if time.time() - self.time > 60:
+ self._stopped = True
+ return self._stopped
+
class HttpServer(threading.Thread):
def __init__(self, dispatcher, host, port):
self.shared = dispatcher.shared
if not self.update():
break
+ self.session.time = time.time()
+
while self.parse():
pass