import multiprocessing from pyftpdlib.authorizers import DummyAuthorizer from pyftpdlib.handlers import FTPHandler from pyftpdlib.servers import FTPServer class SimpleFtpServer(multiprocessing.Process): def __init__(self): super().__init__() self.authorizer = DummyAuthorizer() handler = FTPHandler handler.authorizer = self.authorizer self.server = FTPServer(("127.0.0.1", 0), handler) def run(self): self.server.serve_forever() def stop(self): self.server.close_all() self.server.close() self.terminate() self.join() def allow_anonymous(self, cwd): self.authorizer.add_anonymous(cwd) def add_user(self, user, password, cwd): self.authorizer.add_user(user, password, cwd, perm="elradfmwMT") def base_url(self): return "ftp://127.0.0.1:{}".format(self.server.address[1])