In a simple Fabric task that uses transfers.rsync to update a file on a host, everything works well if the host is accessible. If the host is down for some reason, though, rsync seems to hang indefinitely (well, I've waited 10 minutes or so) rather than time out and raise an exception. This task runs on a schedule, so it's important that it fail cleanly.
As a workaround, I just do a
c.run("pwd")
before the rsync step. If the host is inaccessible, run fails quickly as expected and gives me my exception.
Thank you for your time and consideration!