def main(argv): parser = argparse.ArgumentParser() parser.add_argument('--unix_socket', action='store') parser.add_argument('mode', type=str, nargs='?') parser.add_argument('target', type=str, nargs='?') args = parser.parse_args(argv) if args.mode: if args.mode == 'always' and args.target: Handler.filename = args.target elif args.mode == 'redirect' and args.target: Handler.redirect = args.target elif args.mode == '404': Handler.not_found = True elif args.mode == 'timeout': Handler.simulate_timeout = True elif args.mode == 'auth': Handler.auth = True if args.target: Handler.filename = args.target httpd = None if args.unix_socket: httpd = UnixStreamServer(args.unix_socket, Handler) sys.stderr.write('Serving forever on %s.\n' % args.unix_socket) else: port = None while port is None: try: port = random.randrange(32760, 59760) httpd = TCPServer(('', port), Handler) except socket.error: port = None sys.stdout.write('%d\nstarted\n' % (port, )) sys.stdout.flush() sys.stdout.close() sys.stderr.write('Serving forever on %d.\n' % port) try: httpd.serve_forever() finally: sys.stderr.write('Goodbye.\n')
class NetemDaemonThread(threading.Thread): def __init__(self, socket): super(NetemDaemonThread, self).__init__() self.__server = None self.__socket = socket self.running = False def run(self): self.running = True self.__server = UnixStreamServer(self.__socket, NetemDaemonHandler) os.chmod(self.__socket, 0o666) logging.info("Start pynetem daemon") self.__server.serve_forever() def stop(self): if self.__server is not None: logging.info("Stop pynetem daemon") self.__server.shutdown() self.__server = None self.running = False
res['concentration'] = self.concentration(data["position"]) res['robot'] = data['robot'] res['position'] = data['position'] res['type'] = "cloudread" print("Robot {number}: position {position} with concentration {concentration}".format(number=data["robot"], position=data["position"], concentration=res["concentration"])) # Send response using single communication channel. # Generally it's bad pattern, but don't want to make async nor block # inside robot. with socket.socket(socket.AF_UNIX, socket.SOCK_STREAM) as conn: conn.connect(os.path.join("/tmp/sst/", str(data["robot"]))) conn.send(json.dumps(res).encode("utf-8")) conn.close() if __name__ == "__main__": parser = ArgumentParser(description="Cloud sensor") parser.add_argument("config", help="Path to environment configuration") args = parser.parse_args() config = ConfigParser() config.read(args.config) cloud = config["cloud"] radius = int(cloud["radius"]) center = [x for x in map(float, map(float, cloud["center"].split(',')))] path = os.path.join("/tmp/sst/", Cloud.name) server = UnixStreamServer(path, Cloud.handler(center, radius)) print("Starting server") server.serve_forever()
self.wfile.write(r.encode('utf-8')) super().finish() if __name__ == "__main__": print('%s start...' % __file__) path = r'/home/nykh2010/sqlite3.sock' # try: # with open(CONFIG_PATH, 'r') as f: # config = f.read(1024) # c_dict = json.loads(config) # DBPORT = c_dict['dbconfig']['DBPORT'] # DBIP = c_dict['dbconfig']['DBIP'] # except: # DBIP = 'localhost' # DBPORT = 9000 if os.path.exists(path): os.unlink(path) dbserver = UnixStreamServer(path, DBServer) try: engine = create_engine(r'sqlite:///gateway.db?check_same_thread=False', echo=True) Base.metadata.create_all(engine) Session = sessionmaker(bind=engine) except Exception as e: print(e) dbserver.serve_forever()