def _start_web_server(): global http_server from http.server import SimpleHTTPRequestHandler from socketserver import TCPServer try: if need_chdir: os.chdir(root) handler = SimpleHTTPRequestHandler else: handler = partial(SimpleHTTPRequestHandler, directory=root) http_server = TCPServer(("", 8000), handler, bind_and_activate=False) http_server.daemon_threads = True http_server.allow_reuse_address = True http_server.server_bind() http_server.server_activate() http_server_ready.set() http_server.serve_forever() except: import traceback traceback.print_exc() finally: http_server = None http_server_ready.set() if need_chdir: os.chdir(curr_dir)
def launch_d3po(path): """Start a server to view an exported D3PO bundle, and open a browser. :param path: The TLD of the bundle """ from socketserver import TCPServer from http.server import SimpleHTTPRequestHandler from random import randrange from socket import error import webbrowser from threading import Thread os.chdir(path) while True: try: PORT = randrange(8000, 9000) server = TCPServer(("", PORT), SimpleHTTPRequestHandler, False) server.allow_reuse_address = True server.server_bind() break except error: # port already taken pass print('Serving D3PO on port 0.0.0.0:%i' % PORT) server.server_activate() thread = Thread(target=server.serve_forever) thread.setDaemon(True) # do not prevent shutdown thread.start() webbrowser.open('http://0.0.0.0:%i' % PORT)
jsonrpc.methods['stop'] = server_shutdown # http://stackoverflow.com/questions/4040620/is-it-possible-to-list-all-functions-in-a-module functions = inspect.getmembers(sys.modules[args.functions], inspect.isfunction) for function in functions: if function[0].startswith("keras_"): jsonrpc.methods[function[0]] = function[1] print("\nStart JSON-RPC stream server (TCP)...") print("jsonrpc2://" + args.host + ":" + str(args.port)) li = "\n - " print("Functions:" + li + li.join(str(x) for x in sorted(jsonrpc.methods))) print("Ctrl-C to stop") server = None try: # Create the server server = TCPServer((args.host, args.port), JsonRpcStreamServerHandler) server.allow_reuse_address = True # Activate the server; this will keep running until you interrupt the program with Ctrl-C server.serve_forever() except KeyboardInterrupt: print("\nKeyboard interrupt received, exiting.") server.shutdown() finally: print("Terminate server") if server != None: # Check if server exists, since in case of server creation errors, server variable may not be set server.server_close() sys.exit(0)
#!/usr/bin/env python from socketserver import (TCPServer as TCP, StreamRequestHandler as SRH) from time import ctime import pprint HOST = '' PORT = 2437 BUFSIZ = 1024 ADDR = (HOST, PORT) class MyRequestHandler(SRH): def handle(self): # self.request is the TCP socket connected to the client data = self.request.recv(1024).strip() print("{}".format(self.client_address)) print("{} wrote:".format(self.client_address[0])) print(data) data = str(data, 'utf-8') echo_data = "{} {}".format(ctime(), data) self.request.sendall(bytes(echo_data, 'utf-8')) tcpServ = TCP(ADDR, MyRequestHandler) # https://brokenbad.com/address-reuse-in-pythons-socketserver/ tcpServ.allow_reuse_address = True print("...waiting for connection") tcpServ.serve_forever()