NOOP コマンドを送信します。これは、接続がまだ進行していることを確認するだけであり、定期的に行うと、接続を維持できます。
例えば:
conn.voidcmd("NOOP")
接続に問題がある場合、FTP オブジェクトは例外をスローします。ドキュメントから、エラーが発生した場合に例外がスローされることがわかります。
socket.error および IOError:これらはソケット接続によって発生し、関心のあるものである可能性が最も高いです。
exception ftplib.error_reply:サーバーから予期しない応答を受信したときに発生する例外。
exception ftplib.error_temp:一時的なエラーを示すエラー コード (400 ~ 499 の範囲の応答コード) を受信したときに発生する例外。
exception ftplib.error_perm:永続的なエラーを示すエラー コード (500 ~ 599 の範囲の応答コード) を受信したときに発生する例外。
exception ftplib.error_proto:ファイル転送プロトコルの応答仕様に適合しない、つまり 1 ~ 5 の範囲の数字で始まる応答をサーバーから受信した場合に発生する例外。
したがって、try-catch ブロックを使用してエラーを検出し、それに応じて処理できます。
たとえば、次のコード サンプルは IOError をキャッチし、それについて通知してから、操作を再試行します。
retry = True
while (retry):
try:
conn = FTP('blah')
conn.connect()
for item in list_of_items:
myfile = open('filename', 'w')
conn.retrbinary('stuff', myfile)
### do some parsing ###
retry = False
except IOError as e:
print "I/O error({0}): {1}".format(e.errno, e.strerror)
print "Retrying..."
retry = True