def __init__(self, computation, host='', port=8181, poll_sec=10, DocumentRoot=None,
keyfile=None, certfile=None, show_task_args=True):
self._lock = threading.Lock()
if not DocumentRoot:
DocumentRoot = os.path.join(os.path.dirname(__file__), 'data')
self._nodes = {}
self._updates = {}
if poll_sec < 1:
pycos.logger.warning('invalid poll_sec value %s; it must be at least 1', poll_sec)
poll_sec = 1
self._poll_sec = poll_sec
self._show_args = bool(show_task_args)
self._server = BaseHTTPServer.HTTPServer((host, port), lambda *args:
HTTPServer._HTTPRequestHandler(self, DocumentRoot, *args))
if certfile:
self._server.socket = ssl.wrap_socket(self._server.socket, keyfile=keyfile,
certfile=certfile, server_side=True)
self._httpd_thread = threading.Thread(target=self._server.serve_forever)
self._httpd_thread.daemon = True
self._httpd_thread.start()
self.computation = computation
self.status_task = pycos.Task(self.status_proc)
if computation.status_task:
client_task = computation.status_task
def chain_msgs(task=None):
task.set_daemon()
while 1:
msg = yield task.receive()
self.status_task.send(msg)
client_task.send(msg)
computation.status_task = pycos.Task(chain_msgs)
else:
computation.status_task = self.status_task
pycos.logger.info('Started HTTP%s server at %s',
's' if certfile else '', str(self._server.socket.getsockname()))
评论列表
文章目录