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

Python中处理的信号导致FTP连接中断,python,signals,Python,Signals,此脚本检查FTP并按预定间隔下载文件 向其发送正确的信号(SIGUSR1)应使其正常关闭,如果正在运行,则等待checkAll完成 class ScheduledFtpCheck(FtpCheck, Scheduler): def __init__(self): ... self.aborted, self.checking = False, False def abort(self, *args, **kwargs): se

此脚本检查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过早退出:

Traceback (most recent call last):
  File "/root/my-applications/sensor/sensor/lib/importutils2.py", line 137, in connectAndCheckAll
    try: self.checkAll()
  ...
  File "/usr/lib/python2.6/ftplib.py", line 182, in getline
    line = self.file.readline()
  File "/usr/lib/python2.6/socket.py", line 406, in readline
    data = self._sock.recv(self._rbufsize)
error: [Errno 4] Interrupted system call
所以我的脚本正确地处理了信号,但计划检查没有

为什么??我怎样才能预防它


感谢您的支持

我找到了解决方案:

在单独的线程中运行ftp进程将其与主进程信号隔离

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