Я прочитал множество статей и учебник о Python 3.5 async/wait. Я должен сказать, что я довольно запутан, потому что некоторые используют get_event_loop() и run_until_complete(), некоторые используют make_future(), некоторые используют asyncio.wait(), а некоторые используют call_soon().
Похоже, у меня есть много вариантов, но я понятия не имею, полностью ли они идентичны или есть случаи, когда вы используете циклы, и есть случаи, когда вы используете wait().
Но все примеры работают с asyncio.sleep()
как симуляция реальной медленной операции, которая возвращает ожидаемый объект. Как только я попытаюсь поменять эту строку на какой-то реальный код, все это не удастся. Какая разница между подходами, написанными выше, и как мне запускать стороннюю библиотеку, которая не готова к async/await. Я использую службу Quandl для получения данных о запасах.
import asyncio
import quandl
async def slow_operation(n):
# await asyncio.sleep(1) # Works because it await ready.
await quandl.Dataset(n) # Doesn't work because it not await ready.
async def main():
await asyncio.wait([
slow_operation("SIX/US9884981013EUR4"),
slow_operation("SIX/US88160R1014EUR4"),
])
# You don't have to use any code for 50 requests/day.
quandl.ApiConfig.api_key = "MY_SECRET_CODE"
loop = asyncio.get_event_loop()
loop.run_until_complete(main())
Надеюсь, вы поняли, насколько я потерял себя, и насколько просто я хотел бы работать параллельно.