Ich schreibe einen SSH-Server mit Twisted Conch. Aber stieß auf ein schwieriges Problem. Angenommen, Benutzer A und Benutzer B melden sich über den Befehl ssh beim twisted ssh-Server an. Dann Benutzer A Schwanz oder Katze eine große Datei (größer als 100M) auf dem Server, die viel Echo durch die twisted SSH-Server verursachen wird, wodurch python ssh Prozess (twisted.conch) CPU-Auslastung ist sehr hoch (größer als 95% oder sogar 100%), dann wird der Benutzer B blockiert, lange keine Antwort. Gibt es eine Möglichkeit, die Sitzung von BenutzerA zu schlafen (0,5 Sekunden), wenn der Benutzer A eine große Anzahl von Echos durch den twisted ssh-Server findet und die anderen verbundenen Benutzer nicht blockiert.Python SSH Server (twisted.conch) nimmt hohe CPU-Auslastung, wenn eine große Anzahl von Echo
import sys
import checkers
from twisted.python import components, log, logfile
from twisted.cred import portal
from twisted.internet import reactor
from twisted.conch.ssh import factory, keys, session, filetransfer
from twisted.conch.unix import UnixSSHRealm, SSHSessionForUnixConchUser, UnixConchUser
import keyvalue
if __name__ == "__main__":
sshFactory = factory.SSHFactory()
sshFactory.portal = portal.Portal(UnixSSHRealm())
sshFactory.portal.registerChecker(checkers.UsernamePasswordChecker())
sshFactory.publicKeys = {
'ssh-rsa': keys.Key.fromString(keyvalue.publicKey)}
sshFactory.privateKeys = {
'ssh-rsa': keys.Key.fromString(keyvalue.privateKey)}
components.registerAdapter(
SSHSessionForUnixConchUser, UnixConchUser, session.ISession)
log.startLogging(sys.stdout)
reactor.listenTCP(2222, sshFactory)
reactor.run()