私は tftpy を使用しており、サーバーを作成する必要があり、次にクライアントでファイルをダウンロード/アップロードしてから、サーバーを閉じることができます。
これを達成するためにマルチプロセッシングを使用することを考えていましたが、サーバーを正常に閉じる方法がわかりません。最後の手段は terminate() を使用することですが、おそらくもっと良い方法があります (おそらく、マルチプロセッシングを使用しないより簡単な方法です)。multiprocessing.Event() についても知っていますが、 run_sv() メソッドがどのようにリッスンし続けるのかわかりません
コードは次のとおりです。
import multiprocessing
import tftpy
def run_sv():
name = multiprocessing.current_process().name
print name, 'Starting sv'
server = tftpy.TftpServer('./rootf')
server.listen('0.0.0.0', 69)
print name, 'Exiting sv'
def run_cl():
name = multiprocessing.current_process().name
print name, 'Starting cl'
client = tftpy.TftpClient('127.0.0.1', 69)
client.download('aaa.txt', './downf/zzz.txt')
print name, 'Exiting cl'
if __name__ == '__main__':
service = multiprocessing.Process(name='my_sv', target=run_sv)
worker_1 = multiprocessing.Process(name='my_cl', target=run_cl)
service.start()
worker_1.start()
出力:
my_sv Starting sv
my_cl Starting cl
my_cl Exiting cl
そしてもちろんそこにぶら下がっています。