Source code for network_pipeline.scripts.listen_udp_port

#!/usr/bin/env python

import os
import sys
import datetime
import time
import socket


[docs]def listen_on_udp_port(): """listen_on_udp_port Run a simple server for processing messages over ``UDP``. ``UDP_LISTEN_ON_HOST`` - listen on this host ip address ``UDP_LISTEN_ON_PORT`` - listen on this ``UDP`` port ``UDP_LISTEN_SIZE`` - listen on to packets of this size ``UDP_LISTEN_SLEEP`` - sleep this number of seconds per loop ``UDP_LISTEN_SHUTDOWN_HOOK`` - shutdown if file is found on disk """ host = os.getenv( "UDP_LISTEN_ON_HOST", "127.0.0.1").strip().lstrip() port = int(os.getenv( "UDP_LISTEN_ON_PORT", "17000").strip().lstrip()) backlog = int(os.getenv( "UDP_LISTEN_BACKLOG", "5").strip().lstrip()) size = int(os.getenv( "UDP_LISTEN_SIZE", "1024").strip().lstrip()) sleep_in_seconds = float(os.getenv( "UDP_LISTEN_SLEEP", "0.5").strip().lstrip()) shutdown_hook = os.getenv( "UDP_LISTEN_SHUTDOWN_HOOK", "/tmp/udp-shutdown-listen-server-{}-{}".format( host, port)).strip().lstrip() if os.path.exists(shutdown_hook): print((("Please remove the UDP shutdown hook file: " "\nrm -f {}") .format(shutdown_hook))) sys.exit(1) now = datetime.datetime.now().isoformat() print((("{} - Starting UDP 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_DGRAM) s.bind((host, port)) msg = 0 while 1: data = None address = None data, address = s.recvfrom(4096) if data: now = datetime.datetime.now().isoformat() print((("{} received UDP data={} ") .format( now, data))) msg += 1 if msg > 1000000: msg = 0 # if address: # client.sendto("PROCESSED", address) else: time.sleep(sleep_in_seconds) if os.path.exists(shutdown_hook): now = datetime.datetime.now().isoformat() print((("{} detected shutdown " "file={}") .format( now, shutdown_hook))) # end of loop print("Shutting down")
# end of listen_on_udp_port if __name__ == '__main__': listen_on_udp_port()