
Aleksander
05.07.2016
22:06:40
А ртути другой тулзы для мониторинга не юзает ?
Никто*

Roman
06.07.2016
07:10:53
Есть кто на pgday?
А есть ли какая-то инфраструктура счетчиков для python с бэкендом в редисе? Хочется метрики снимать в приложении.

Google

Vitali K.
06.07.2016
11:17:51
Мы делаем это вручную..
1) Инкрементируем счетчик в редисе из разных воркеров
2) Отдельный скрипт бегущий в фоне раз в минуту отправляет значения в https://github.com/spotify/ffwd и очищает счетчики
3) ffwd отправляет счетчики в KairosDB
4) Смотрим результаты в Grafana
Вообще не то что тебе нужно ))

Serge
06.07.2016
18:00:04

Vitali K.
06.07.2016
18:08:15
@lig11 в нашем случае надо обновлять тк у нас все вручную. Обычно в готовых либах обнулять не нужно, да

Serge
06.07.2016
22:36:20
23 Июля IT Global Meetup #8
http://www.meetup.com/spbpython/events/232311643/
http://www.meetup.com/spbpython/events/231934142/

Roman
07.07.2016
09:01:52
def _currency(self, currency):
if currency == u'2':
return u'rur'
elif currency == u'1':
return u'usd'
elif currency == u'3':
return u'eur'
Помните этот код?
А как его можно переписать строго на лямбдах?
Не могу не поделиться шЫдевром

Andrey
07.07.2016
09:03:51
и как, переписали?

Google

Roman
07.07.2016
09:04:38
Да там выяснилось, что у человека цель: лямбда ради лямбды

Andrey
07.07.2016
09:06:19
ну нет паттернматчинга в питоне к сожалению

Dmitry
07.07.2016
09:07:28
под паттерн-матчингом разумеешь switch-case?.. Так дикт же

GNU/Docker
07.07.2016
09:13:34
Но это не паттерн матчинг, а так, херня.
но лучше иф-елифов.

Serge
07.07.2016
09:21:10

Dmitry
07.07.2016
09:22:31
о, да? хм, не знал
а как через енам такое сделать?..

Serge
07.07.2016
09:23:09
Инстанциировать enum числом и всё

Dmitry
07.07.2016
09:23:16
аа. всё, понял вроде
прикольно. Надо не забыть.

Serge
07.07.2016
09:23:33
Enum(1)
cur = CurEnum(1)
assert cur == CurEnum.usd
коллеги, нужна помощь с профайлингом по памяти
есть сайт, да на джанге
запускаем, ждем, выжрал до хрена
хочется понять какой запрос к сайту увеличил потребление памяти
gevent

Google

Serge
07.07.2016
10:50:16
запросов много паралелльных, савнить потребление и ответы сложно
uwsgi вроде умеет репортить в логи потребление памяти, может кто знает тулзу чтобы это удобно копать?
вот тут пишут http://stackoverflow.com/a/12254394/396862
но блин, оно правда будет захватывать другие запросы, т.е. придется коррелировать срабатывания между собой... ну что ж
попробую сначала https://pypi.python.org/pypi/django-profiling-dashboard
завести завел, но результат не тот, что я ожидал.
в итоге логгирую через middleware
кое что накопал
а вот еще, а чем можно нарушения DRY в коде искать? pyflakes?

Konstantin
07.07.2016
15:20:07
в целом по коду проекта - не знаю, а по модулю pylint точно показывал количество повторов

Dmitry
07.07.2016
16:24:30
flake8

Serge
07.07.2016
16:56:14
ну flake8 это же pyflakes + pep8, правильно?

Aleksander
07.07.2016
17:49:54
народ, а что можно заюзать в качестве простой очереди для множества GET, POST запросов ?
хочется чего-нибудь простого а не Celery
python-rq боюсь не справится

Roman
07.07.2016
17:50:34

Serge
07.07.2016
17:52:37
varnish

Roman
07.07.2016
17:54:51

Aleksander
07.07.2016
17:55:33
nginx в качестве очереди для питона ?)
очередь задач на отправку запросов

Vitali K.
07.07.2016
17:56:36
Мы используем RQ

Google

Vitali K.
07.07.2016
17:56:46
Десятки миллионов запросов в день

Roman
07.07.2016
17:56:51

Vitali K.
07.07.2016
17:57:09
Если речь об исходящих запросах

Aleksander
07.07.2016
17:58:33
нет кол-ва на открытые сокеты ?
ограничения*

Serge
07.07.2016
17:59:04
если ответ меньше секунды, то это очень мало параллельных соединений

Admin
ERROR: S client not available

Serge
07.07.2016
18:00:53
мы вон тоже параллельно в несколько систем ходим, по 200 параллельных коннектов с каждого хоста

Aleksander
07.07.2016
18:02:03

Vitali K.
07.07.2016
18:02:28
Чисты rq. Но ив без gevent
На сервер несколько сотен воркеров

Serge
07.07.2016
18:03:37

Vitali K.
07.07.2016
18:03:41
Да

Serge
07.07.2016
18:03:51
да вы батенька жируете;)

Vitali K.
07.07.2016
18:04:08
Можно сделать иначе, не спорю

Serge
07.07.2016
18:04:23
200 одновременных запросов спокойно летит с одного процесса на gevent на t2.small в aws
можно и больше, зависит от того насколько сложно результат обрабатывать

Google

Vitali K.
07.07.2016
18:05:12
Парсить и писать на Диск

Serge
07.07.2016
18:05:50
вот парсить - это может быть что угодно от маленьго json до километров xml

Vitali K.
07.07.2016
18:05:57
Знаю знаю)
Rq плохо работает с длинными очередями
Там LREM O(n) для удпления завершившейся таски
Лучше делить на несколько очередей по какому то признаку. И расплавление будет ровнее и редис тупить не будет

Serge
07.07.2016
18:13:40
вернемся к DRY
flake8 не ищет повторы кода

Vitali K.
07.07.2016
18:14:26
А кто-есть умеет?

Aleksander
07.07.2016
18:18:02

Vitali K.
07.07.2016
18:20:20
Создавать очереди динамически - да
Но каждый воркер привязан с списку очередей
Т.е. если юзеры меняются, то не вариант похоже

Serge
07.07.2016
18:22:40
pylint пишет, что умеет

Vitali K.
07.07.2016
18:22:50
Ограничения на кол-во очередей я не увидел тк у меня всего ~30

Roman
07.07.2016
18:23:31
Людям хотелось увидеть как сервис будет жить при росте нагрузки

Vitali K.
07.07.2016
18:30:06
@jetbootsmaker длинная очередь на нашем редисе это скажем > 50k

Dmitry
07.07.2016
18:44:49

Sergey
07.07.2016
18:44:58
как?

Dmitry
07.07.2016
18:45:12
и предлагает выделить в метод

Eugene
07.07.2016
18:45:27
https://www.jetbrains.com/help/idea/2016.1/analyzing-duplicates.html

Sergey
07.07.2016
18:45:38
здорово