Python 2.7 进程结束,退出代码为-1073741819(0xC0000005)[python,套接字] 操作系统-windows server 2012
python-2.7.11Python 2.7 进程结束,退出代码为-1073741819(0xC0000005)[python,套接字] 操作系统-windows server 2012,python-2.7,sockets,Python 2.7,Sockets,python-2.7.11 此程序是用于在套接字上接收数据的服务器端代码。 但有时会抛出错误,我不知道它可能在哪里。 我附上了代码示例 import sys, socket, datetime, threading import conf, work_with_DB, log import subprocess class socket_server(): def __init__(self, ip, port): self.ip = ip self.port = po
此程序是用于在套接字上接收数据的服务器端代码。
但有时会抛出错误,我不知道它可能在哪里。
我附上了代码示例
import sys, socket, datetime, threading import conf, work_with_DB, log import subprocess
class socket_server():
def __init__(self, ip, port):
self.ip = ip
self.port = port
#asyncore.dispatcher.__init__(self)
sys.setrecursionlimit(10000)
# write to log
log.logging('time %s' % datetime.datetime.now(), self.port)
#log.logging('create socket on -> %s' % conf.LOCAL_server_ip[0])
log.logging('create socket on -> %s:%d' % (self.ip, self.port), self.port)
#print 'create socket on -> %s' % conf.LOCAL_server_ip[0]
print 'create socket on -> %s:%d' % (self.ip, self.port)
self.sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# write to log
log.logging('bind to socket', self.port)
print 'bind to socket'
#sock.bind(conf.LOCAL_server_ip)
self.sock.bind((self.ip, self.port))
# write to log
log.logging('listen socket...', self.port)
print 'listen socket...'
self.sock.listen(5)
def run(self):
self.conn, self.addr = self.sock.accept()
# write to log
#log.logging('accept connection from -> ip=%s' % addr[0])
log.logging('accept connection from -> %s:%s...time =%s' % (self.ip, self.port, datetime.datetime.now()), self.port)
#print 'accept connection from -> ip= %s, port= %s...time= %s' % (addr[0], addr[1], now_time)
print 'accept connection from -> %s:%s...time =%s' % (self.ip, self.port, datetime.datetime.now())
while True:
# receiving TCP-data
self.query_from_MES = self.conn.recv(10000).strip()
if not len(self.query_from_MES) == 0:
# log.logging('receive from -> ip =%s, port =%s...time =%s' % (addr[0], addr[1], now_time))
log.logging('receive from -> %s:%s...time =%s' % (self.ip, self.port, datetime.datetime.now()), self.port)
print 'query -> %s' % (self.query_from_MES)
log.logging('query -> %s' % (self.query_from_MES), self.port)
flag = self.query_from_MES[0:3]
print 'flag -> %s' % (flag)
log.logging('flag -> %s' % (flag), self.port)
if flag == 'REQ':
answer = self.query_from_MES + work_with_DB.get_last_receiving_data(self.port)
print 'request from -> %s:%s' % (self.ip, self.port)
log.logging('request from -> %s:%s' % (self.ip, self.port), self.port)
print 'sent to MES -> %s...time =%s' % (answer, datetime.datetime.now())
log.logging('sent to MES -> %s...time =%s' % (answer, datetime.datetime.now()), self.port)
# send answer to client
self.conn.send(answer)
else:
answer = work_with_DB.upload_data(self.query_from_MES[0:4000], self.port)
return_msg = self.query_from_MES[0:45] + answer
print 'send data from %s:%s' % (self.ip, self.port)
log.logging('send data from %s:%s...time =%s' % (self.ip, self.port, datetime.datetime.now()), self.port)
print 'sent to MES -> %s...time =%s' % (return_msg, datetime.datetime.now())
log.logging('sent to MES -> %s...time =%s' % (return_msg, datetime.datetime.now()), self.port)
self.conn.send(return_msg)
if answer[0:2] == conf._SEND_ERROR:
#print 'address =%s:%s...sleep 5 seconds...' % (self.ip, self.port)
#log.logging('address =%s:%s...sleep 5 seconds...' % (self.ip, self.port))
#time.sleep(5)
#self.conn.settimeout(10)
print 'connection closed'
log.logging('connection closed', self.port)
self.conn.close()
#print 'socket closed'
#log.logging('socket closed')
#self.sock.close()
try:
self.run()
print 'restart server'
log.logging('restart server...', self.port)
except Exception as e:
# returns the name of the exception
print '__________EXCEPTION__________ %s :%s' %(type(e).__name__, e.message)
# returns the name of the exception
log.logging('__________EXCEPTION__________ %s :%s' % (type(e).__name__, e.message), self.port)
print 'START anew socket_server_9217'
log.logging('START anew socket_server_9217', self.port)
subprocess.Popen("socket_server_9217", shell=False)
else:
#print 'address =%s:%s...sleep 5 seconds...' % (self.ip, self.port)
#log.logging('address =%s:%s...sleep 5 seconds...' % (self.ip, self.port))
#time.sleep(5)
#self.conn.settimeout(10)
print 'connection closed'
log.logging('connection closed', self.port)
self.conn.close()
#print 'socket closed'
#log.logging('socket closed')
#self.sock.close()
try:
self.run()
print 'restart server'
log.logging('restart server...', self.port)
except Exception as e:
# returns the name of the exception
print '__________EXCEPTION__________ %s :%s' % (type(e).__name__, e.message)
# returns the name of the exception
log.logging('__________EXCEPTION__________ %s :%s' % (type(e).__name__, e.message), self.port)
print 'START anew socket_server_9217'
log.logging('START anew socket_server_9217', self.port)
subprocess.Popen("socket_server_9217", shell=False)
s = socket_server(conf._IP, conf._PORT_9217)
s.run()
请回溯?请详细提供有关错误的信息此错误像messageBox一样从python.exe抛出。这个脚本工作了几个小时,然后引发了一个错误日志文件,其中没有任何关于异常的信息,我应该在哪里添加回溯?请回溯?请详细提供有关错误的信息。这个错误像python.exe中的messageBox一样抛出。这个脚本工作了几个小时,然后引发了一个错误日志文件。没有关于异常的任何信息。我应该在哪里添加回溯?