как использовать json с asyncio в раздоре? - PullRequest
0 голосов
/ 16 февраля 2020

Я пытаюсь использовать метод await для json, но он сообщает мне об ошибке.

Traceback (most recent call last):
  File "D:/project/shoes_crawler/shoes_crawler/spiders/tes.py", line 73, in <module>
    loop.run_until_complete(main2())
  File "C:\Miniconda3\envs\py35\lib\asyncio\base_events.py", line 467, in run_until_complete
    return future.result()
  File "C:\Miniconda3\envs\py35\lib\asyncio\futures.py", line 294, in result
    raise self._exception
  File "C:\Miniconda3\envs\py35\lib\asyncio\tasks.py", line 240, in _step
    result = coro.send(None)
  File "D:/project/shoes_crawler/shoes_crawler/spiders/tes.py", line 50, in main2
    js = await r.json()
  File "C:\Miniconda3\envs\py35\lib\site-packages\aiohttp\client_reqrep.py", line 1021, in json
    await self.read()
  File "C:\Miniconda3\envs\py35\lib\site-packages\aiohttp\client_reqrep.py", line 973, in read
    self._body = await self.content.read()
  File "C:\Miniconda3\envs\py35\lib\site-packages\aiohttp\streams.py", line 334, in read
    raise self._exception
aiohttp.client_exceptions.ClientConnectionError: Connection closed

Вот код.

async def get_web():
    async with aiohttp.ClientSession() as session:
        async with session.get(url) as r:
            # print(r)
            return r
async def main2():
    r = await get_web()
    if r.status == 200:
        print('200')
        js = await r.json()
        #do someting with js
    await asyncio.sleep(1)
loop = asyncio.get_event_loop()
loop.run_until_complete(main2())

Кроме того, кто-нибудь знает, как позволить main2 () работать вечно? Я хочу проверить целевую сеть, если она обновляет новую вещь

...