djangoのカスタムコマンドでasyncioを使ってwebsocketによりデータを取得したいと思っています。
djangoを使う理由は、ORMを使っているからということとwebsocketで入手したデータをwebアプリとして活用したいからということです。
HPの説明からhundleメソッドにloopを入れ込む形で作ってみましたが、全くデータを受信できませんでした。
setting.pyに以下の文も追加しました。
os.environ["DJANGO_ALLOW_ASYNC_UNSAFE"] = "true"
原因がわかる方がいらっしゃいましたら、ご意見をお願いします。
python
1import asyncio 2import json 3import websockets 4 5class Command(BaseCommand): 6 7 def handle(self, *args, **kwargs): 8 """ループの開始""" 9 loop = asyncio.get_event_loop() 10 loop.create_task(self.stream()) 11 try: 12 loop.run_forever() 13 except KeyboardInterrupt: 14 exit() 15 16 async def stream(self): 17 uri = 'ws://localhost:18081/****/websocket' 18 19 async with websockets.connect(uri, ping_timeout=None) as ws: 20 while not ws.closed: 21 response = await ws.recv() 22 content = json.loads(response) 23 24 score = self.original_method1(kwargs) 25 print('reveiving') 26 27 self.original_method2(kwargs) 28
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/11/26 23:02