实现一个Server,要求动态监测连接到自己的socket并将消息平衡的分发给各个socket,实现易于分布式部署及负载均衡。
server端代码:
#!/usr/bin/env python
#coding = utf-8
'''
Author: Yang XU
E-mail: xuy1202@gmail.com
'''
import os
import time
import socket
import threading
from random import choice
import sys
import traceback
import comm
DEBUG = os.environ.get('DEBUG', False)
class CrazyDoggy(object):
def __init__(self, address):
self.address = address
self._sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
self._sock.bind(self.address)
self._sock.listen(5)
self.clients = []
self.spliter = '\n'
if DEBUG:
self.logInterval = 60
self.timer = comm.RotateTimer(self.logInterval)
self.msgCount = 0
def getDoggy(self):
while 1:
try:
client, addr = self._sock.accept()
self.clients.append((client, addr))
except BaseException, e:
sys.stderr.write(str(e))
sys.stderr.write(str(traceback.format_exc()))
def goboy(self, msg):
succeed = False
msg = str(msg).replace(self.split