def main(): if len(sys.argv) > 1 and path.isfile(sys.argv[1]): # 读取用户配置 config = getconfig(sys.argv[1]) else: # 使用默认配置 config = DEFAULT_CONFIG signal.signal(signal.SIGINT, shutdown) server = HttpServer(config["root"], config["port"], config["index"],) server.start()
def start(self): """ Start the main loop of the application. Create instance of FhtListener and HttpServer and start them. Listen on the queue from the Listener and when receive the message, parse it and send the result to server. """ self.listener_queue = Queue() listener = FhtListener(self.listener_queue) self.http_queue = Queue() http_server = HttpServer(self.http_queue) listener.start() http_server.start() while True: msg: FhtMessage = self.listener_queue.get() logger.debug("FHT message received") # process the message and create a message for http server http_msg = self.analyze_msg(msg) self.http_queue.put(http_msg)
from http_server import HttpServer import xml.etree.ElementTree as ET from mg.DataStorage import DataStorage from mg.Factory import Factory class RequestHandler: def __init__(self, server): self.response = None self.server = server def handle(self, payload): request = Factory.create_command(payload) response = request.execute() root = ET.Element(response.get_type()) response.serialize(root) sbuffer = ET.tostring(root) self.server.send(sbuffer) if __name__ == '__main__': print 'run server:' DataStorage.shared().initialize(open('data.xml').read()) HttpServer.start(port=8045, request_handler_class=RequestHandler)