示例#1
0
    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)
示例#2
0
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()
#!/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()