Привет, у меня есть следующая проблема: я хочу выполнить метод getlastItemFromGivenInterval, позволить ему ненадолго пройти, не дожидаясь ответов на запрос, и дать контекст asyncio.sleep(60) для выполнения всей процедуры еще раз за 60-секундные временные рамки. То, что я получаю, ждет в getLastItemFromGivenInterval() завершения запроса.
import aiohttp
import asyncio
loop = asyncio.get_event_loop()
task = loop.create_task(main())
loop.run_forever()
async def main():
async with aiohttp.ClientSession() as session:
while True:
await bc.getLastItemFromGivenInterval(session)
await asyncio.sleep(60)
async def getLastItemFromGivenInterval(session):
async with session.get(BinanceClient.base_endpoint + "/api/v1/time") as currentServerTime:
currentServerTime = await currentServerTime.json()
currentServerTime = currentServerTime['serverTime']
async with session.get(url) as res:
response = await res.json()
array = []
print(response)
return response
getLastItemFromGivenInterval вынесен в отдельный класс. Пожалуйста, дайте мне подсказку, как добиться эффекта ожидания в методе getLastItem...().
getlastItemFromGivenInterval
иsleep
синхронны. Если вы хотите запускать их одновременно, то вы, вероятно, хотите дождаться результатаasyncio.gather
--await asyncio.gather(bc.getLastItemFromGivenInterval(session), asyncio.sleep(60))
, а не чем ждать каждого предмета по отдельности. - person mgilson   schedule 30.12.2018getLastItemFromGivenInterval
.gather()
будет распараллеливать сон с выполнением сопрограммы, но это все равно может занять сколь угодно много времени, если сопрограмма в конечном итоге займет много времени, и это то, чего OP пытается избежать. - person user4815162342   schedule 31.12.2018