LINUX.ORG.RU

История изменений

Исправление rtxtxtrx, (текущая версия) :

В питоне все не так работает.

async def fetch(session, url):
   response = await session.get(url)
   ...

...
asyncio.gather([fetch(session, url) for url urls])

Там примерно так должно работать:

while True:
  если мы ранее переключили контекст (state проверяем)
    если сокет готов для чтения
      читаем из него данные и меняем state на первоначальный
    иначе
      меняем контекст
      continue
  выполняем контекст пока не встретим await
  затем меняем state и переключаем контекст

Те ничего в принципе сломаться не может.

Там основной цикл есть для проверки состояни, скрытый за asyncio.run()

Исправление rtxtxtrx, :

В питоне все не так работает.

async def fetch(session, url):
   response = await session.get(url)
   ...

...
asyncio.gather([fetch(session, url) for url urls])

Там примерно так должно работать:

while True:
  если мы ранее переключили контекст (state проверяем)
    если сокет готов для чтения
      читаем из него данные и меняем state на первоначальный
    иначе
      continue
  выполняем контекст пока не встретим await
  затем меняем state и переключаем контекст

Те ничего в принципе сломаться не может.

Там основной цикл есть для проверки состояни, скрытый за asyncio.run()

Исходная версия rtxtxtrx, :

В питоне все не так работает.

async def fetch(session, url):
   response = await session.get(url)
   ...

...
asyncio.gather([fetch(session, url) for url urls])

Там примерно так должно работать:

while True:
  если мы ранее переключили контекст (state проверяем)
    если сокет готов для чтения
      читаем из него данные и меняем state на первоначальный
    иначе
      continue
  выполняем контекст пока не встретим await
  затем меняем state и переключаем контекст