teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

5

asyncioに関する記載を追加

2020/10/12 23:45

投稿

shirasublue
shirasublue

スコア19

title CHANGED
File without changes
body CHANGED
@@ -5,6 +5,8 @@
5
5
 
6
6
  ## 実現したいこと
7
7
 
8
+ websocketsライブラリにおいて、asyncioを隠蔽したいです。
9
+
8
10
  以下コードの for で~~`'piyo'`~~受信メッセージを表示したいです。
9
11
  ~~実際にはwebsocketでの受信を逐次表示するような用途で使用したいです。
10
12
  `hogera()`より上は、実際にはライブラリ内に入るイメージです。~~
@@ -16,8 +18,10 @@
16
18
  for msg in Hoge:
17
19
  print(msg)
18
20
  ```
21
+ - 記載変更3 実際には自作のライブラリに入ります。
22
+ ライブラリ使用者からasyncioを隠蔽するのが目的です。
19
23
 
20
- ## コード
24
+ ## 現状参考コード
21
25
 
22
26
  ```python3
23
27
  import websockets

4

ライブラリ websockets の記述を追加

2020/10/12 23:45

投稿

shirasublue
shirasublue

スコア19

title CHANGED
@@ -1,1 +1,1 @@
1
- websocketsで取得したメッセージをforに入れたい
1
+ websocketsで取得したメッセージをforで表示したい
body CHANGED
@@ -1,6 +1,7 @@
1
1
  ## 実行環境
2
2
 
3
3
  - Python 3.8.2
4
+ - websockets 8.1
4
5
 
5
6
  ## 実現したいこと
6
7
 

3

タイトルの変更

2020/10/06 04:40

投稿

shirasublue
shirasublue

スコア19

title CHANGED
@@ -1,1 +1,1 @@
1
- run_forever中のasync関数の値loop実行中関数の呼び元のforに入れたい
1
+ websocketsで取得したメッセージをforに入れたい
body CHANGED
File without changes

2

必要仕様追加

2020/10/06 04:37

投稿

shirasublue
shirasublue

スコア19

title CHANGED
File without changes
body CHANGED
@@ -10,6 +10,12 @@
10
10
 
11
11
  - 記載変更1 websockets を利用する場合、最初のコードでは全く意味がないと思われたので現時点でのコードを追加しました。
12
12
 
13
+ - 記載変更2 最低限守りたいコードが以下です。
14
+ ```
15
+ for msg in Hoge:
16
+ print(msg)
17
+ ```
18
+
13
19
  ## コード
14
20
 
15
21
  ```python3

1

websockets が記載されたサンプルに変更

2020/10/06 04:23

投稿

shirasublue
shirasublue

スコア19

title CHANGED
File without changes
body CHANGED
@@ -4,12 +4,48 @@
4
4
 
5
5
  ## 実現したいこと
6
6
 
7
- 以下コードの for で`'piyo'`を表示したいです。
7
+ 以下コードの for で~~`'piyo'`~~受信メッセージを表示したいです。
8
- 実際にはwebsocketでの受信を逐次表示するような用途で使用したいです。
8
+ ~~実際にはwebsocketでの受信を逐次表示するような用途で使用したいです。
9
- `hogera()`より上は、実際にはライブラリ内に入るイメージです。
9
+ `hogera()`より上は、実際にはライブラリ内に入るイメージです。~~
10
10
 
11
+ - 記載変更1 websockets を利用する場合、最初のコードでは全く意味がないと思われたので現時点でのコードを追加しました。
12
+
11
13
  ## コード
12
14
 
15
+ ```python3
16
+ import websockets
17
+ import asyncio
18
+ import json
19
+
20
+ class Hoge(object):
21
+ async def stream(self):
22
+ async with websockets.connect(self.uri) as ws:
23
+ while not ws.closed:
24
+ response = await ws.recv()
25
+ self.message = json.loads(response)
26
+
27
+ def __init__(self):
28
+ self.message = None
29
+
30
+ def __iter__(self):
31
+ return self
32
+
33
+ def __next__(self):
34
+ return self.message
35
+
36
+ ''' いずこへ…
37
+ loop = asyncio.get_event_loop()
38
+ loop.create_task(self.stream())
39
+ loop.run_forever()
40
+ '''
41
+
42
+ for msg in Hoge:
43
+ print(msg)
44
+ ```
45
+
46
+
47
+ ### 最初に投稿したコード
48
+
13
49
  ```Python3
14
50
  import asyncio
15
51