回答編集履歴
6
説明の曖昧な点を補足
test
CHANGED
@@ -120,7 +120,7 @@
|
|
120
120
|
|
121
121
|
|
122
122
|
|
123
|
-
- async は、awaitを用いる関数 の定義で使います。
|
123
|
+
- async は、awaitを用いる関数 の定義等で使います。async付きで定義された関数を呼び出すと「コルーチン」を返します。
|
124
124
|
|
125
125
|
|
126
126
|
|
5
関数名間違えのコード修正。再帰呼び出しになっていた
test
CHANGED
@@ -296,7 +296,7 @@
|
|
296
296
|
|
297
297
|
if callback:
|
298
298
|
|
299
|
-
self.add_event_
|
299
|
+
self.add_event_callback(callback)
|
300
300
|
|
301
301
|
# ここは実際にも、add_event_detectを呼び出す事で、新スレッドが立ち上がります。
|
302
302
|
|
4
apigpio について補足
test
CHANGED
@@ -96,6 +96,20 @@
|
|
96
96
|
|
97
97
|
|
98
98
|
|
99
|
+
全体像はこのような感じになります(概要のみ)
|
100
|
+
|
101
|
+
- apigpio GPIOを扱う非同期IO
|
102
|
+
|
103
|
+
- discord を扱う非同期IO (client.runの代わりにclient.startを利用)
|
104
|
+
|
105
|
+
- NOTE: 非同期同士の連携には asyncio.Queue が使えます。
|
106
|
+
|
107
|
+
- asyncio.gatherで2つの非同期処理をまとめる (後述のコードを参考にして下さい)
|
108
|
+
|
109
|
+
- asyncio.runで開始
|
110
|
+
|
111
|
+
|
112
|
+
|
99
113
|
----
|
100
114
|
|
101
115
|
## async/await について
|
3
後からサイト上で編集した部分、client.start の引数でエラーになっていたのを修正。
test
CHANGED
@@ -314,7 +314,7 @@
|
|
314
314
|
|
315
315
|
|
316
316
|
|
317
|
-
async def start(self):
|
317
|
+
async def start(self, *args):
|
318
318
|
|
319
319
|
# 非同期で動作。
|
320
320
|
|
2
コード微修正
test
CHANGED
@@ -438,7 +438,7 @@
|
|
438
438
|
|
439
439
|
await asyncio.sleep(1)
|
440
440
|
|
441
|
-
print("
|
441
|
+
print("recv from discord <<<", msg)
|
442
442
|
|
443
443
|
|
444
444
|
|
1
discord の BOT token について追記
test
CHANGED
@@ -478,7 +478,11 @@
|
|
478
478
|
|
479
479
|
# 非同期処理: ディスコードclient と、キューの読み出しの開始
|
480
480
|
|
481
|
+
|
482
|
+
|
483
|
+
BOT_TOKEN = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
|
484
|
+
|
481
|
-
await asyncio.gather(client.start(), listen_queue_loop())
|
485
|
+
await asyncio.gather(client.start(BOT_TOKEN), listen_queue_loop())
|
482
486
|
|
483
487
|
|
484
488
|
|