Python中处理的信号导致FTP连接中断

2024-10-06 08:55:19 发布

您现在位置:Python中文网/ 问答频道 /正文

此脚本按预定的时间间隔检查FTP和下载文件。在

如果正在运行,向它发送正确的信号(SIGUSR1)应该使它优雅地关闭,等待checkAll完成。在

class ScheduledFtpCheck(FtpCheck, Scheduler):
    def __init__(self):
         ...
         self.aborted, self.checking = False, False

    def abort(self, *args, **kwargs):
        self.aborted = True
        if not self.checking: self.quit()

    def checkAll(self):
        if not self.isAborted():
            self.checking = True
            self.checkAll()
            self.checking = False
            if self.aborted: self.quit()

    ...

def main():
    sch = ScheduledFtpCheck()
    signal.signal(signal.SIGUSR1, sch.abort)
    sch.start()

问题是我接到一个中断的系统调用ftplib.FTP文件过早退出:

^{pr2}$

所以我的脚本正确地处理了信号,但是调度检查没有

为什么?我怎样才能防止呢?在

谢谢你的支持


Tags: 文件self脚本falsesignalif信号def
1条回答
网友
1楼 · 发布于 2024-10-06 08:55:19

我找到了解决办法:

在一个单独的线程中运行ftp进程将它与主进程信号隔离开来

threading.Thread(target=self.checkAll).start()

相关问题 更多 >