やりたいこと
フォーム入力でなにかしらwebサービスのログイン情報を登録。
登録した情報の一覧画面で、アカウント情報の横にはボタンがあって、
開始ボタンを押したら何かしらの処理をスレッドで実行。
終了ボタンを押したら処理を停止させる。
という感じのwebアプリを作りたいと思っています。
行き詰まっていること
スレッドの開始は簡単にできたのですが、
いま動いている特定のスレッドを指定して停止させる方法がわかりません。
質問
以下のソースで、
/start?name=○○○
にアクセスしたらスレッドを実行。
/stop?name=○○○
にアクセスしたら、スタート時にgetで送ったnameのスレッドを停止させる。
これを実現するにはどのようにコーディングすればいいでしょうか?
python
1from flask import Flask, request 2from threading import Thread, Semaphore 3from datetime import datetime 4import time 5 6app = Flask(__name__) 7sem = Semaphore(5) 8 9 10def main(semaphore, name): 11 with semaphore: 12 while True: 13 time.sleep(1) 14 print(name + ': ' + str(datetime.today())) 15 16 17@app.route('/') 18def index(): 19 return 'index' 20 21 22@app.route('/start') 23def start(): 24 name = request.args.get('name') 25 if name: 26 th = Thread(target=main, args=(sem, name)) 27 th.start() 28 return name + ' started.' 29 return 'スレッド名を入力してください。' 30 31 32@app.route('/stop') 33def stop(): 34 name = request.args.get('name') 35 if name: 36 # 停止する処理 37 return name + ' stopped.' 38 return '停止したいスレッド名を入力してください。' 39 40 41if __name__ == '__main__': 42 app.run() 43

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。