我正在编写一个CGI脚本,该脚本应该在用户断开连接之前向用户发送数据,然后再运行日志记录任务。
问题:当客户端断开连接(由于无法写入stdout缓冲区而检测到)时,代替中断执行和日志记录完成,脚本结束或被终止(我无法在任何地方找到任何日志,以了解此退出是如何发生的)
以下是代码片段:
for block in r.iter_content(262144):
if stopRecord == True:
r.close()
if not block:
break
if not sys.stdout.buffer.write(block): #The code fails here after a client disconnects
break
cacheTemp.close()
####write data to other logs and exit gracefully####
我尝试使用"除了:"以及#34;除了SystemExit:"但无济于事。有谁能解决这个问题? (它是一个CGI脚本,应该在客户端终止其连接时记录)
更新:我现在尝试使用信号来中断脚本中的kill进程,这也没有用。我在哪里可以看到错误日志?我确切地知道哪条线路失败以及在哪种条件下,但是如果我在终端中运行了一个失败的脚本,那么就没有错误日志或类似的东西。
答案 0 :(得分:0)
当你说它杀死程序时,你的意思是主要的python进程退出 - 而不是由一些抛出的异常?这有点奇怪。解决方法可能是让任务在单独的Thread
或process
中运行,然后监视它直到它死亡并随后执行第二个任务。