@spbpython

Страница 738 из 785
Ruslan
20.06.2018
18:09:20
Я про скобки

Serge
20.06.2018
18:10:22
Я вообще против специального синтаксиса. Почему бы просто промис не возвращать и не дергать его методы? Ну, или хотя бы импортировать функции нужные, как с dataclasses.
А то мы вот убрали оператор print, теперь он у нас ми-ми-ми функция. Давайте теперь добавим пару новых операторов.

Ruslan
20.06.2018
18:10:33
Суть этого синтаксиса в том, что научившись не видеть эти специальные async/await ты пишешь будто бы синхронный код

Serge
20.06.2018
18:11:16
Суть этого синтаксиса в том, что научившись не видеть эти специальные async/await ты пишешь будто бы синхронный код
Вот. Этот синтаксис не нужен, пока у тебя не появляется микса. А как только он появляется, начинается боль.

Google
Serge
20.06.2018
18:12:12
Ну, например, потому что это не функция, а AST. Его надо научить там ждать определенные узлы.

Надо бы проверить

Ruslan
20.06.2018
18:12:24
Вот. Этот синтаксис не нужен, пока у тебя не появляется микса. А как только он появляется, начинается боль.
Ты имеешь ввиду смесь асинхронного/синхронного? Это да, боль, полностью согласен

Serge
20.06.2018
18:13:01
Ещё раз. Это не про то что оно возвращает, а про AST

Валидность синтаксиса не зависит от возвращаемых значений.

У меня только к этому и был вопрос.

У меня только к этому и был вопрос.
А возник он после примера Ромы

в итоге, приходится плодить ужас вроде: a = await some_task() b = await a

Ruslan
20.06.2018
18:17:16
Насколько помню, рантайм как раз на этом моменте падает, если await не awaitable, синтаксис нужно чекнуть и чекнуть await (await awaitable)

в итоге, приходится плодить ужас вроде: a = await some_task() b = await a
Я считаю это плохой пример. Ужас тут в названии переменных. Если они по человечески обозваны, то это только повысит читаемость

Roman
20.06.2018
18:19:22
Не работает. Работает тот велосипед что выше я показал.

А вот не тестил. Оно ломается ещё на этапе парсера

Google
Ruslan
20.06.2018
18:22:41
Эта смесь всегда у тебя будет.
Сейчас сижу на aiohttp/motor, проблема только с моками, в остальном все уже написано/разруливается aiohttp сервером

Serge
20.06.2018
18:22:53
А вот не тестил. Оно ломается ещё на этапе парсера
У меня недавно в js в подобной ситуации скобочки помогли:)

Ruslan
20.06.2018
18:24:10
По сравнению с чем и на сколько процентов?

Serge
20.06.2018
18:24:59
aiohttp - тормозное и без учёта использования asyncio
Блин, это всё такие игрушки бесполезные в реальной жизни. Ну вот оно добавляет то, что и так уже есть, только неудобно. Ладно, ну буду, а то меня бомбить начнёт.

Ruslan
20.06.2018
18:25:39
Самое быстрое, чтоя пробовал - falkon, но он реально пустой

Serge
20.06.2018
18:27:01
По сравнению с чем и на сколько процентов?
По сравнению со всем. Иногда в разы. У них даже баг про это был. Ничем не кончилось, так и оставили. Это вообще карма у Светлова такая, по ходу. Gunicorn такой же. И на вопрос про быстродействие gunicorn Светлов отвечает, типа "медленный, потому что на питоне написан".

Roman
20.06.2018
18:50:59
Зачем?
А иначе как? Вот как ты понимаешь где расставить await? :)

Ruslan
20.06.2018
18:59:05
Там где ждешь io и по цепочке. async IO возможен только в асинхронной функции, она тоже, функция вызывающая ее тоже. Ну и так далее. Просто не нужно воспринимать async/await как волшебную непокоримую магию. Просто пишешь обычный синхронный код, но помнишь, что в корутинах позволяешь переключиться на другую задачу на слове await

Ruslan
20.06.2018
19:06:41
Это же сокет в самом конце сидит, да, не ожидать от него io было бы странным.

Roman
20.06.2018
19:30:20
Это же сокет в самом конце сидит, да, не ожидать от него io было бы странным.
Это да. Но я немного про другое: вот есть некая some_fn(), которую ты хочешь из асинхронного кода. Все ок, а потом через пару релизов автора укусила асинхронная змея, но ради сохранения интерфейса он влепил run_until_complete.

Roman
20.06.2018
19:53:08
Ну это проблема не конкретно асинхронщины, дураков полно и без нее
нет, это как раз проблема реализации. по-нормальному, у тебя либо все асинхронное, либо ничего. как компромисс - ограничить возможность вызова таких вещей.

Roman
20.06.2018
19:56:03
gevent/eventlet, если говорить про python

Google
Serge
20.06.2018
19:59:32
Ruslan
20.06.2018
20:04:57
go )
Где там? go вместо await, определение awaitable при компиляции, а не в рантайме. Что там запрещает совмещать?

Если ты использовал go, то у тебя все становится асинхронным. Просто от тебя сокрыта реализация, тебе там не приходится расставлять async/await и менять сигнатуры. Тут совершенно ваша правда

Это неприятный момент, бесспорно, но я надеюсь рано или поздно это придет и в питон

Ruslan
20.06.2018
20:22:59
Roman
20.06.2018
20:23:26
https://gist.github.com/ghoseb/1109003

вообще, вот этого очень не хватает в asyncio

Ruslan
20.06.2018
20:31:36
вообще, вот этого очень не хватает в asyncio
Угадай где тут самая магия? Монкипатчинг. Злодейское зло. Можно и для asyncio такое провернуть, каждую функцию обернуть, вариативно отдавать либо корутину, либо функцию, в зависимости от .

Serge
20.06.2018
20:34:25
Danil
20.06.2018
20:41:08
А так да, было бы приятно

Roman
20.06.2018
20:41:37
Угадай где тут самая магия? Монкипатчинг. Злодейское зло. Можно и для asyncio такое провернуть, каждую функцию обернуть, вариативно отдавать либо корутину, либо функцию, в зависимости от .
Можно было просто втащить это в язык, в stackless. Тогда и манкипатч не надо. Насколько я помню, основными аргументами за явный async были отсутствие потери контроля за control flow и отсутствие проблем которые рождает подход тредов(Локи и вот это все).

Не хватает monkey.patch_all()? ))
Не хватает продуманности :) я ж говорю, тот же trio куда лучше выглядит

Serge
20.06.2018
20:46:03
IT Global Meetup #13 Летний слет IT-сообществ Петербурга под открытым небом. 28 июля 2018, суббота с 10.00 до 21.00 пос. Рощино, Загородный клуб "Райвола" Спешите регистрироваться! Количество мест ограничено. http://piter-united.ru/

Danil
20.06.2018
20:57:03
Не хватает продуманности :) я ж говорю, тот же trio куда лучше выглядит
``` async def async_double(x): return 2 * x ``` ``` import trio trio.run(async_double, 3) ``` VS ``` import asyncio loop = asyncio.get_event_loop() loop.run_until_complete(async_double(3)) loop.close() ``` 1:0

Ruslan
20.06.2018
20:59:55
``` async def async_double(x): return 2 * x ``` ``` import trio trio.run(async_double, 3) ``` VS ``` import asyncio loop = asyncio.get_event_loop() loop.run_until_complete(async_double(3)) loop.close() ``` 1:0
Ну и зачем это вообще? Асинхронный код становится синхронным, почему не использовать синхронный аналог либы?

Google
Roman
20.06.2018
21:01:13
там есть еще годные примеры. например, когда тебе надо параллельно сделать несколько запросов и по истечению дедлайна их все завершить.

Ruslan
20.06.2018
21:13:59
Я думаю, что важное условие существования питона в данном случае соблюдено - обратная совместимость. Старые библиотеки подключатся, можно использовать. В старый проект тащить новые фичи и ожидать от них чуда - странно. Раньше все это было вообще на генераторах и yield, но питон двигается. Со временем, возможно, все придет к тому же что и в го. Просто await и полетели.

Admin
ERROR: S client not available

Roman
20.06.2018
21:16:06
Alexey
20.06.2018
21:19:13
советую почитать https://vorpus.org/blog/notes-on-structured-concurrency-or-go-statement-considered-harmful/
блин ну сразу же вопрос, почему pthread и goroutine/asyncio как бы не одно и тоже. Одно дело честный системный тред со всеми вытекающеми и другое дело внутренний eventloop

Roman
20.06.2018
21:21:04
блин ну сразу же вопрос, почему pthread и goroutine/asyncio как бы не одно и тоже. Одно дело честный системный тред со всеми вытекающеми и другое дело внутренний eventloop
> these all arrange for myfunc to start running concurrently to the rest of the program, and then return immediately so that the parent can do other things. так что я абсолютно согласен.

с точки зрения api это идентичные вещи.

кстати, что мне нравится в trio - это чекпоинты. это вот прямо вообще огонь идея и чем-то напоминает последовательность SIGTERM, SIGKILL. корутину уведомляют что на следующей итерации её прибьют и дают возможность корректно завершиться.

Roman
20.06.2018
21:55:25
>напоминает историю где чуваки транкейтили дескрипторы процесса и случайно указали процессом майскуль и затранкейтили ибдат

гыгыгы. простите, но это волшебно.

Serge
21.06.2018
00:22:00
https://t.me/spbpythonnews/34

Alexey
21.06.2018
06:17:29
всегда есть возможность выстрелить в ногу :)
Я прост не понимаю, почему эти правила проще или правильнее соблюдать, чем свои для корутин. Как по мне, отсутствие простенькой либы перевешивает необходимость самому реализовать пару проверок.

Serge
21.06.2018
06:22:53
https://twitter.com/1st1/status/1009576832000233472

Alex
21.06.2018
06:27:14
Я думал что уже ушла мода RPS письками мериться

amureki
21.06.2018
06:32:40
На хеллоувордах

Danil
21.06.2018
06:38:35
Google
Danil
21.06.2018
06:39:28
правильно, надо мериться $PS )
А есть у кого в компании мониторинг бизнеса, так чтобы смотреть чтобы с алертами и инцидентами?

Alex
21.06.2018
06:40:14
У нас был бизнес-монитор Женя

для тех части zabbix

можно поставить графану на него, вывести на большой монитор и чувствовать себя высокотехнологичным

Danil
21.06.2018
06:55:56
для тех части zabbix
вот это-то да, такое много где видел, а так чтобы ops смотрели еще на метрики бизнеса, и исходили от них, пока не встречал.

Serge
21.06.2018
07:18:54
А есть у кого в компании мониторинг бизнеса, так чтобы смотреть чтобы с алертами и инцидентами?
Я видел в одной компании, в которой работал, метрику бизнеса, выведенную на корпоративный портал. Но она была очень высокоуровневая. Типа зелёненький, жёлтый и красный. Но уверен, что там ещё много всего, просто подробные метрики показывают только специальным людям.

Alexey
21.06.2018
07:51:42
Я видел в одной компании, в которой работал, метрику бизнеса, выведенную на корпоративный портал. Но она была очень высокоуровневая. Типа зелёненький, жёлтый и красный. Но уверен, что там ещё много всего, просто подробные метрики показывают только специальным людям.
Ну для сайта какого-нить, такики метриками будут конверсия регистраций, суточный и текущий онлайн. кол-во сообщений/комментариев на портале и такое вот всякое. Чот мне кажется такое мониторят весьма многие.

Alex
21.06.2018
07:55:24
Ну для сайта какого-нить, такики метриками будут конверсия регистраций, суточный и текущий онлайн. кол-во сообщений/комментариев на портале и такое вот всякое. Чот мне кажется такое мониторят весьма многие.
довелось даже собирать статистику проходок роботов поисковых систем по ресурсу компании lua/nginx =) Зависит от замороченности компании на маркетинг продвижении

обычно бизнес аналитикой занимаются отдельные люди все же, нет смысла в публичных дашбордах

Dmitry
21.06.2018
07:58:42
Check out @outcoldman's Tweet: https://twitter.com/outcoldman/status/1009604576125726720?s=09

Alex
21.06.2018
08:01:48
Сейчас бы питон и кресты сравнивать

Страница 738 из 785