質問編集履歴

1

async.gatherを使ったコードに変更しました

2020/12/26 23:54

投稿

taro_yamada
taro_yamada

スコア55

test CHANGED
File without changes
test CHANGED
@@ -4,11 +4,21 @@
4
4
 
5
5
 
6
6
 
7
-  今回相談したいのは、前回の処理メッセージを受け取り処理している最中に、次のメッセージの処理を始めることは可能でしょうかという点です。
7
+  今回相談したいのは、前回の処理メッセージを受け取り処理している最中に、次のメッセージの処理を始めることは可能でしょうかという点です。
8
8
 
9
9
 
10
10
 
11
11
   clientの処理でいうと、eventメソッドのwait終わりのメッセージが表示される前に「受け取り直後」というメッセージを表示させたいと思っています。
12
+
13
+
14
+
15
+ 12/27追記
16
+
17
+ gatherを使ったコードに変更してみました。
18
+
19
+ メソッド1とメソッド2が同時に始まるようになったのですが、受け取ったメッセージに対して、メソッド1と2が終わらないと、次のメッセージの受け取りが始まりません。
20
+
21
+ メソッド1だけ終わったら次のメッセージを受け取りに行くといった形にしたいのですが、可能でしょうか?
12
22
 
13
23
   
14
24
 
@@ -36,39 +46,37 @@
36
46
 
37
47
 
38
48
 
39
- async def stream():
40
-
41
- uri = 'ws://127.0.0.1:5678/'
42
-
43
-
44
-
45
49
  async with websockets.connect(uri, ping_timeout=None) as ws:
46
50
 
47
51
  while not ws.closed:
52
+
53
+
48
54
 
49
55
  response = await ws.recv()
50
56
 
51
57
  board = json.loads(response)
52
58
 
53
- print('受け取り直後 {}'.format(board))
59
+ await asyncio.gather(
54
60
 
55
- await event(board)
61
+ event(board),
56
62
 
57
- print('eventメソッド終了後 {}'.format(board))
63
+ get_url()
58
64
 
59
- print(datetime.datetime.now())
60
-
61
- await get_url()
65
+ )
62
66
 
63
67
 
64
68
 
65
69
  async def event(board):
66
70
 
67
- print('これから2秒待つ' + board)
71
+ print('これから5秒待つ' + str(board))
68
72
 
69
- await asyncio.sleep(2)
73
+ await asyncio.sleep(5)
70
74
 
71
75
  print('wait終わり')
76
+
77
+ print(datetime.datetime.now())
78
+
79
+
72
80
 
73
81
 
74
82
 
@@ -154,28 +162,22 @@
154
162
 
155
163
  <結果>
156
164
 
157
- wait前 {'message': 'longlongstr', 'time': '2020-12-26T14:32:47.447154Z'}
165
+ これから5秒待つ{'message': 'longlongstr', 'time': '2020-12-26T23:43:58.316069Z'}
158
166
 
159
- これから2秒待つ
167
+ b'<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
160
168
 
161
169
  wait終わり
162
170
 
163
- wait後 {'message': 'longlongstr', 'time': '2020-12-26T14:32:47.447154Z'}
171
+ 2020-12-27 08:44:03.311604
164
172
 
165
- 2020-12-26 23:32:49.436782
173
+ これから5秒待つ{'message': 'longlongstr', 'time': '2020-12-26T23:44:00.082327Z'}
166
174
 
167
- b'<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN
175
+ b'<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
168
-
169
- wait前 {'message': 'longlongstr', 'time': '2020-12-26T14:32:48.835207Z'}
170
-
171
- これから2秒待つ
172
176
 
173
177
  wait終わり
174
178
 
175
- wait後 {'message': 'longlongstr', 'time': '2020-12-26T14:32:48.835207Z'}
179
+ 2020-12-27 08:44:08.321386
176
180
 
177
- 2020-12-26 23:32:51.488915
181
+ これから5秒待つ{'message': 'longlongstr', 'time': '2020-12-26T23:44:02.372114Z'}
178
182
 
179
183
  b'<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
180
-
181
- wait前 {'message': 'longlongstr', 'time': '2020-12-26T14:32:48.935470Z'}