пример парсинга курса валют
import aiohttp
import asyncio
import xml.etree.ElementTree as ET
async def currencyRatesFromCBR():
result = {
"USD": 1,
"EUR": 1,
}
async with aiohttp.get("http://www.cbr.ru/scripts/XML_daily.asp") as resp:
assert resp.status == 200
tree = ET.fromstring(await resp.text())
for v in tree.iter("Valute"):
code = v.find("CharCode").text
if code in result:
result[code] = float(v.find("Value").text.replace(",", "."))
return result
async def main():
print(await currencyRatesFromCBR())
asyncio.get_event_loop().run_until_complete(main())
вопрос - я реализовал currencyRatesFromCBR() если убрать у нее async то интерпретатор ругается на ошибку синтаксиса.
если не убирать то
приходится писать
async def main():
print(await currencyRatesFromCBR())
а такое не работает
def main():
print(currencyRatesFromCBR())
и что теперь придется в каждой функции где хоть как то используется асинхронность писать async await?
или я чтото не так использую?
вобщем вопрос - как реализовать синхронную функцию с асинхронной загрузкой данных - или это в принципе не возможно?