我有一个带套接字的服务器,当客户端连接一个新线程开始在 mysql 数据库中记录接收数据时,脚本做得很好,但我有一个无限的时间,脚本只能工作 4 小时我至少需要服务器工作24 小时。
我能做些什么?
import time
import MySQLdb
import sys
from socket import *
myHost = ''
myPort = 6250
sockobj = socket(AF_INET, SOCK_STREAM)
sockobj.bind((myHost, myPort))
sockobj.listen(10)
print 'Server On'
def handleClient(connection):
time.sleep(0.1)
while True:
try:
data = connection.recv(256)
except timeout:
break
if not data:
break
if 'q' not in data:
if ',' in data:
dato = data.split(',')
try:
db=MySQLdb.connect(host='localhost',user='',passwd='',db='')
cursor=db.cursor()
sql = "INSERT INTO imei"+dato[1]+" (imei, estado, fecha, numero) VALUES ('%s','%s','%s','%s')"%(dato[0],dato[1],dato[2],dato[3])
cursor.execute(sql)
db.close()
except MySQLdb.Error:
db.close()
break
try:
connection.send('LOAD')
except:
break
connection.close( )
thread.exit()
def dispatcher( ):
while True:
connection, address = sockobj.accept( )
try:
thread.start_new(handleClient, (connection,))
except:
dispatcher( )
dispatcher( )
如果我用 fork 执行相同的脚本,它也可以工作 4 小时。