0

我有一个带套接字的服务器,当客户端连接一个新线程开始在 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 小时。

4

1 回答 1

0

我建议您使用https://pypi.python.org/pypi/supervisor确保它 24 小时运行。另外,您能否在此脚本崩溃后复制粘贴回溯?

于 2013-04-02T04:00:52.600 回答