def __init__(self, parent, name, logger, address = '', port = 80): self.parent = parent self.name = name self.logger = logger self.order_incoming_event = Event() self.address = address self.port = port addr = self.address, self.port self.server = HTTPd(addr, HTTPHandler, self) self.parent.daemon_added(self)
class HTTPDaemon(object): def __init__(self, parent, name, logger, address = '', port = 80): self.parent = parent self.name = name self.logger = logger self.order_incoming_event = Event() self.address = address self.port = port addr = self.address, self.port self.server = HTTPd(addr, HTTPHandler, self) self.parent.daemon_added(self) def log(self, order, message, level = logging.INFO): msg = '%s/%s/%s: %s' % (self.name, order.get_service_name(), order.get_id(), message) self.logger.log(level, msg) def add_account(self, account): user = account.get_name() password = account.get_password() self.server.add_account(user, password) def run(self): address = (self.address or '*') + ':' + str(self.port) nameaddr = self.name, address self.logger.info('HTTPDaemon %s/%s starting.' % nameaddr) try: self.logger.info('HTTPDaemon %s/%s listening' % nameaddr) self.server.serve_forever() except KeyboardInterrupt: print '^C received, shutting down server' self.logger.info('Shutting down normally.') self.server.socket.close()