1

私はserve_foreverコマンドを使用するftpサーバーを持っています。このftpサービスはスレッドで呼び出されます。私がやりたいのは、GUIの停止ボタンを押したときに、メインスレッドからスレッドを突然閉じたいということです。

import os
import sqlite3
from pyftpdlib import ftpserver
def main():
    authorizer = ftpserver.DummyAuthorizer()
    #does something
    address = ('127.0.0.1', 10221)
    ftpd = ftpserver.FTPServer(address, handler)

    # start ftp server
    ftpd.serve_forever()
if __name__ == '__main__':
    main()

これはftpサービスを呼び出す私のメインスレッドです

def start_ftp(self):
    self.ftp_status.setText("Running")
    self.ftp_status.setStyleSheet("Background : light green")
    #thread.start_new_thread( FtpService )

def stop_ftp(self):
    self.ftp_status.setText("Stopped")
    self.ftp_status.setStyleSheet("Background : red")
    #what should i put here for the desired result

みんなを助けてください

4

1 に答える 1

2

ドキュメントによると、close_all「提供を停止する必要があります...」ので、serve_forever戻る必要があります。

ftpdオブジェクトをグローバル変数(現在はローカル)に格納します。メインスレッドから、またはメインスレッドからmain呼び出すことができます。closeclose_all


コメントによると、手順は次のとおりです。

  1. グローバル変数ftpd = ftpserver.FTPServer(address, handler)参照する
  2. ftpd.close_all()ftp接続の提供を停止したいときに呼び出す
于 2012-08-15T12:20:33.523 に答える