Spaces:
Running
on
Zero
Running
on
Zero
disconnect時のcancel
Browse files
app.py
CHANGED
@@ -125,6 +125,16 @@ def handle_connect(auth):
|
|
125 |
def handle_disconnect():
|
126 |
global connected_clients
|
127 |
connected_clients -= 1
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
128 |
|
129 |
@app.route('/submit_task', methods=['POST'])
|
130 |
@limiter.limit("10 per minute") # 1分間に10回までのリクエストに制限
|
|
|
125 |
def handle_disconnect():
|
126 |
global connected_clients
|
127 |
connected_clients -= 1
|
128 |
+
# キャンセル処理:接続が切断された場合、そのクライアントに関連するタスクをキャンセル。ただし、1番目で処理中のタスクはキャンセルしない
|
129 |
+
client_ip = get_remote_address()
|
130 |
+
for task_id, task in list(active_tasks.items()):
|
131 |
+
if task.client_ip == client_ip and get_active_task_order(task_id) > 0:
|
132 |
+
task.cancel_flag = True
|
133 |
+
if task_id in task_futures:
|
134 |
+
task_futures[task_id].cancel()
|
135 |
+
del task_futures[task_id]
|
136 |
+
del active_tasks[task_id]
|
137 |
+
tasks_per_client[client_ip] = tasks_per_client.get(client_ip, 0) - 1
|
138 |
|
139 |
@app.route('/submit_task', methods=['POST'])
|
140 |
@limiter.limit("10 per minute") # 1分間に10回までのリクエストに制限
|