UDP接收不同端口数据案例
通过部署docker或者supervisor可以进程重启操作
# coding=utf-8
import sys
import time
import multiprocessing
import socketserver
import logging
import json
ports = [8190, 8001]
class UdpServer(socketserver.BaseRequestHandler):
def handle(self):
# 设备ip,0为ip 1为端口
device_ip, device_port = self.client_address
data, server = self.request
def start_server(port, name):
logging.info("%s%s启动" % (port, name))
server = socketserver.ThreadingUDPServer(("0.0.0.0", port), UdpServer)
server.serve_forever()
if __name__ == "__main__":
logging.info("复合围栏V3.0底层服务已启动...")
udp_server_list = []
# 多进程数据通信
# manager = multiprocessing.Manager()
# temp_dict = manager.dict()
for num in ports:
udp_server = multiprocessing.Process(target=start_server, args=(num, "端口:"))
udp_server.daemon = True
udp_server.start()
udp_server_list.append(udp_server)
time.sleep(2)
while True:
for server_live in udp_server_list:
if server_live.is_alive() is False:
logging.warning("有进程崩溃,关闭全部进程重启")
sys.exit()
time.sleep(1)
附带docker的镜像运行命令和supervisor的配置文件
docker run -d --restart=always --name udp_server -p 8001:8001/udp -p 8190:8190/udp -e TZ=Asia/Shanghai udp_server:1.0
[program:main]
command=python3 /root/main.py ;
user = root ;如果不是以root身份设置端口转发的话,转发端口只能使用大于1024的端口号
autostart=true
autorestart=true
numprocs=1
killasgroup=true
stopasgroup=true
startsecs = 10 ;自动重启间隔
[supervisord]
nodaemon=false
[supervisorctl]
版权说明
本文地址:http://www.liuyangdeboke.cn/?post=7
未标注转载均为本站远程,转载请注明文章出处:
发表评论