Source code for network_pipeline.scripts.listen_tcp_port

#!/usr/bin/env python

import os
import sys
import datetime
import time
import socket


[docs]def listen_on_tcp_port(): """listen_on_tcp_port Run a simple server for processing messages over ``TCP``. ``LISTEN_ON_HOST`` - listen on this host ip address ``LISTEN_ON_PORT`` - listen on this ``TCP`` port ``LISTEN_SIZE`` - listen on to packets of this size ``LISTEN_SLEEP`` - sleep this number of seconds per loop ``LISTEN_SHUTDOWN_HOOK`` - shutdown if file is found on disk """ host = os.getenv( "LISTEN_ON_HOST", "127.0.0.1").strip().lstrip() port = int(os.getenv( "LISTEN_ON_PORT", "80").strip().lstrip()) backlog = int(os.getenv( "LISTEN_BACKLOG", "5").strip().lstrip()) size = int(os.getenv( "LISTEN_SIZE", "1024").strip().lstrip()) sleep_in_seconds = float(os.getenv( "LISTEN_SLEEP", "0.5").strip().lstrip()) shutdown_hook = os.getenv( "LISTEN_SHUTDOWN_HOOK", "/tmp/shutdown-listen-server-{}-{}".format( host, port)).strip().lstrip() if os.path.exists(shutdown_hook): print((("Please remove the shutdown hook file: " "\nrm -f {}") .format( shutdown_hook))) sys.exit(1) now = datetime.datetime.now().isoformat() print((("{} - Starting Server address={}:{} " "backlog={} size={} sleep={} shutdown={}") .format( now, host, port, backlog, size, sleep_in_seconds, shutdown_hook))) s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.bind((host, port)) s.listen(backlog) msg = 0 while 1: client, address = s.accept() send_data = False data = None while not data: data = client.recv(size) if data: now = datetime.datetime.now().isoformat() print((("{} received msg={} " "data={} replying") .format( now, msg, data))) msg += 1 if msg > 1000000: msg = 0 send_data = True else: time.sleep(sleep_in_seconds) if send_data: client.send(data) if os.path.exists(shutdown_hook): now = datetime.datetime.now().isoformat() print((("{} detected shutdown " "file={}") .format( now, shutdown_hook))) client.close()
# end of loop # end of listen_on_tcp_port if __name__ == '__main__': listen_on_tcp_port()