@snhou answer helped me figuring out a bug in FTPHost, it always defaults to port 21:
class ImplicitFTP_TLS(FTP_TLS):
port = 990
_sock = None
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.prot_p()
...
Then you can do:
fhost = FTPHost(host, user, pw, session_factory=ImplicitFTP_TLS)