回答編集履歴

2

typo修正: initialzier -> initializer, threadin -> threading

2021/02/15 03:51

投稿

teamikl
teamikl

スコア8664

test CHANGED
@@ -76,11 +76,11 @@
76
76
 
77
77
   1接続:1スレッドとして、接続数を制限するには、ThreadPoolExecutor のmax_workers で指定。
78
78
 
79
- - ThreadPoolExecutor の initialzier で、初期化処理を行えます。
79
+ - ThreadPoolExecutor の initializer で、初期化処理を行えます。
80
80
 
81
81
  - スレッド別に接続を持つには、
82
82
 
83
-  threadin.local を使い、スレッド固有データに socket を初期化・接続
83
+  threading.local を使い、スレッド固有データに socket を初期化・接続
84
84
 
85
85
 
86
86
 

1

追記: 改善方法について

2021/02/15 03:51

投稿

teamikl
teamikl

スコア8664

test CHANGED
@@ -57,3 +57,31 @@
57
57
  データ長が想定しない不正な値になり、パフォーマンス低下の原因になる等も考えられます。
58
58
 
59
59
  ログを取ってデータが期待通りのタイミングで送受信されてることを確認しましょう。
60
+
61
+
62
+
63
+ ----
64
+
65
+ 改善方法について、問題が広範囲に渡りそうので具体的な方法は出せませんが、
66
+
67
+ 方向性・案のみ
68
+
69
+
70
+
71
+ - サーバーが2つになってる理由は何ですか?
72
+
73
+  もし、サーバーが単一の接続しか受け付けないようであれば、複数接続対応が第一の課題です。
74
+
75
+ - executor.submit ではなく、executor.map を使います。
76
+
77
+  1接続:1スレッドとして、接続数を制限するには、ThreadPoolExecutor のmax_workers で指定。
78
+
79
+ - ThreadPoolExecutor の initialzier で、初期化処理を行えます。
80
+
81
+ - スレッド別に接続を持つには、
82
+
83
+  threadin.local を使い、スレッド固有データに socket を初期化・接続
84
+
85
+
86
+
87
+ ※ 切断時の処理は含みません。大量のデータ&接続数の場合は、他にエラー時のリカバリも必要になってきます。