как правило не стоит
Мне приходится делать так await (Foo.boo == boo) Потому что в функции есть асинхронная функция можно ли как то избавиться от await?
:( А как по другому сделать?
сделать что? я не понял откуда был выдран этот кусок и почему там асинк
url: https://pastebin.com/DuqaSwp9
зачем ты сделал __eq__ асинхронным?
Потому что использую асинхронную функцию тест в которой есть httpx.get
Что за херня? Зачем ты в __eq__ делаешь запрос?
Чтобы было красиво(
Некрасиво же
Foo.id == 123 по моему лучше чем Foo.search(id=123)
зато понятно, что присходит
Это вообще семантически не одно и то же.
Если под капотом при этом дёргается апи — хуже. Ты сделал для пользователя класса вид, что это дешёвая операция, а на деле — нет. И смысл нифига не понятен.
а че нет? человек хочет свой QL.
не, хуже в разы, мне из твоего кода нужно понимать, что при сравнении идет запрос в сеть, эта конструкция просто дизориентирует меня
asyncio.run(afunc())
а лучше разделить модель данных и штуку которая делает запросы client.search(Foo.id==123)
не надо так
Ладно asyncio.get_event_loop().run_until_complete(func())
Ну почему же... в зависимости от задачи это как раз таки может требоваться.
свой квери-движок
За asyncio.get_event_loop() принято в приличном обществе водить ссаной тряпкой по лицу.
что за общество? O.o
Ну наверное у него уже есть луп и не надо новый создавать
Общество тех, кто читал документацию
Токсикоманов на работе
Блестяще. Он на каждую операцию будет в сеть лезть или всё-таки сперва запрос целиком сформирует, а потом отдельным методом явно запустит поиск?
да, но контекст: async def main(): print(await (Foo.id == 1))
1. asyncio.get_event_loop() таки создает новый луп если его нет, но это может сломаться в любой момент 2. run_until_complete не будет работать, если луп уже запущен
Тут дошли до момента, когда попытались __eq__ асинхронным сделать. То есть уже куда-то не туда ушло.
Обсуждают сегодня