def ftp_errors(fs, path=None):
try:
with fs._lock:
yield
except socket.error:
raise errors.RemoteConnectionError(
msg='unable to connect to {}'.format(fs.host)
)
except error_temp as error:
if path is not None:
raise errors.ResourceError(
path,
msg="ftp error on resource '{}' ({})".format(path, error)
)
else:
raise errors.OperationFailed(
msg='ftp error ({})'.format(error)
)
except error_perm as error:
code, message = _parse_ftp_error(error)
if code == 552:
raise errors.InsufficientStorage(
path=path,
msg=message
)
elif code in (501, 550):
raise errors.ResourceNotFound(path=path)
raise errors.PermissionDenied(
msg=message
)
评论列表
文章目录