关于python:ftp中的循环失败连接pyth3.6

Looping in FTP fail connection Pyth3.6

我正在使用一个ftp服务器,当我对它没有响应时,比如互联网故障或其他什么情况时,我想尝试不断地连接它。我证明了在正常情况下,我能够成功连接,但我现在想要的是在一段时间内循环连接,因为在尝试连接几秒钟后,Jupyter笔记本会给我一个错误并停止程序。

目标是能够不断尝试连接到ftp服务器,直到它连接,然后在a==1时跳到下一个语句:因此,由于我有一个jupyter笔记本问题,我尝试的是在5秒后将if放在何处,它将中断循环。

有人有其他解决办法吗?它仍然不起作用。用于阅读的THX:)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
while a==0:
    print('starting 1rst loop')

    while True:
        timeout = time.time() + 5   # 5 seconds from now
        while a==0 :
            print("Connecting to FTP Server")
            #domain name or server ip:
            ftp = FTP('ftpIP')
            #Passw and User
            ftp.login(user=XXX, passwd = XXX)
            print('Connected to the FTP server')
            ftp.quit()
            ftp.close()
            a= a+1
            if  a==0 and time.time() > timeout:
                timeout=0
                break
while a==1:

虽然我不太明白你的意思,但这看起来怎么样?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
import time
import socket
from ftplib import FTP


def try_connect(host, user, passwd):
    print('Connecting to FTP Server')
    ftp = FTP()
    try:
        # domain name or server ip
        ftp.connect(host, timeout=5)
    except socket.error:
        print('Connect failed!')
        return False
    # Passwd and User
    ftp.login(user, passwd)
    print('Connected to the FTP server')
    ftp.quit()
    ftp.close()
    return True


def main():
    while True:
        try_connect('192.168.1.1', user='anonymous', passwd='')
        print()
        time.sleep(5)


if __name__ == '__main__':
    main()

它每5秒尝试连接一次ftp并输出结果。