'Run ACME server on specified ``port``.
This method is idempotent, i.e. all calls with the same pair of
``(port, challenge_type)`` will reuse the same server.
:param int port: Port to run the server on.
:param challenge_type: Subclass of `acme.challenges.Challenge`,
either `acme.challenge.HTTP01` or `acme.challenges.TLSSNI01`.
:param str listenaddr: (optional) The address to listen on. Defaults to all addrs.
:returns: DualNetworkedServers instance.
:rtype: ACMEServerMixin'

def run(self, port, challenge_type, listenaddr=''):

    assert (challenge_type in (challenges.TLSSNI01, challenges.HTTP01))
    if (port in self._instances):
        return self._instances[port]
    address = (listenaddr, port)
    try:
        if (challenge_type is challenges.TLSSNI01):
            servers = acme_standalone.TLSSNI01DualNetworkedServers(address, self.certs)
        else:
            servers = acme_standalone.HTTP01DualNetworkedServers(address, self.http_01_resources)
    except socket.error as error:
        raise errors.StandaloneBindError(error, port)
    servers.serve_forever()
    real_port = servers.getsocknames()[0][1]
    self._instances[real_port] = servers
    return servers
