我使用Twisted Python库继承了一个项目。用户从Windows XP注销后,应用程序将终止。
Python代码已使用bbfreeze转换为可执行文件。此外,使用instsrv.exe和srvany.exe将bbfreeze生成的可执行文件注册为Windows服务。
我从Twisted网站上做了一个简单的聊天示例,并从bbfreeze创建了一个可执行文件,并将其注册到instsrv和srvany,同样的问题出现了:用户注销后,可执行文件停止运行。
我倾向于认为Windows XP和Twisted库的某些内容导致应用程序终止或停止运行。特别是,我认为反应堆代码中可能存在导致应用程序代码停止运行的问题。但是,我无法证实这一点。
有没有其他人看过这个或对可能导致这种情况的任何想法?
谢谢, 标记
答案 0 :(得分:2)
通过" 判断我还可以通过一个简单的聊天样本重现这个"评论,扭曲是罪魁祸首。互联网上的人确实报告Twisted服务有时会以这种方式失败:Re: SIGBREAK on windows。
Twisted有一个内部日志工具。使用它的一个例子是Twisted starting/stopping factory/protocol less noisy log messages的答案。如果你使用它,你就已经看到" 收到了SIGBREAK ... "消息指向根本原因。
BTW,我使用下面的代码在我的脚本中记录未处理的异常。如果要在无人看管的情况下运行脚本(或者您诊断问题的其他人:^),这总是一个好主意。
# set up logging #####################################
import sys,os,logging
logfile = os.path.splitext(os.path.basename(sys.argv[0]))[0]+".log"
logging.basicConfig(\
format='%(asctime)s %(levelname)-8s %(message)s',\
filename=logfile,\
level=logging.DEBUG)
l = logging.getLogger()
#to avoid multiple copies after restart from pdb prompt
if len(l.handlers)<=1: l.addHandler(logging.StreamHandler(sys.stdout))
#hook to log unhandled exceptions
def excepthook(type,value,traceback):
logging.exception("Unhandled exception occured",exc_info=(type,value,traceback))
old_excepthook(type,value,traceback)
old_excepthook = sys.excepthook
sys.excepthook = excepthook
# ####################################################