@python_beginnersЭта группа больше не существует

Страница 645 из 1885
Артем
29.10.2016
07:44:23
вчера делал вот так https://hub.docker.com/r/tomparys/skype/ не работает на X ругается

Leonid
29.10.2016
10:13:55
Что это
Это можно записать так, в конце определения def, validate_topping = staticmethod(validate_topping)

Zart
29.10.2016
10:28:26
человек сразу стопиццот вопросов смешал воедино

потому что для ответа надо описать полностью ооп, дескрипторы и декораторы...

Google
Zart
29.10.2016
10:29:25
скайп в докер
лучше хуй в розетку

Артем
29.10.2016
10:30:29
Allison
29.10.2016
10:30:49
Ахах

Темный
29.10.2016
10:31:39
обьясни
У меня ест йенг, у меня есть розетка... Аааа... Йенг-розетка

Zart
29.10.2016
10:32:03
ну потому что я вижу лишь пару вариантов для скайпа в докере

либо гонять его привилегированным контейнером, что по сути не сильно будет отличаться от тупой распаковки какогонить тарболла локально либо настраивать чтобы всё по сети фурычило... - иксы для проброса гуя, пульсаудио - для передачи звука с микрофона и на динамики а как с видеопотоком с камеры быть - хз...

Артем
29.10.2016
10:34:01
/usr/bin/xauth: timeout in locking authority file /home/docker/.Xauthority X11 connection rejected because of wrong authentication.

у меня вот это вылезло

Zart
29.10.2016
10:34:21
ну

куки надо пробросить

это ты еще на начале ёбли, пытаешься иксовый клиент заставить работать

DISPLAY у тебя хоть задан?

Артем
29.10.2016
10:39:20
DISPLAY у тебя хоть задан?
я по этой ссылке делал нихера там про display нет https://hub.docker.com/r/tomparys/skype/

Google
Logerk49
29.10.2016
10:41:13
http://pastebin.com/WR2nuNch как сделать чтобы при инициализации класса animals изменялся volume на 1?

Johnnie
29.10.2016
10:42:26
а нахуя?

мб добавить метод типа add_animal() в Shelter?

Артем
29.10.2016
10:43:49
У меня ест йенг, у меня есть розетка... Аааа... Йенг-розетка
как законтачишь, расскажешь об очучениях

Logerk49
29.10.2016
10:44:05
не подумал ыыы

мб добавить метод типа add_animal() в Shelter?

Артем
29.10.2016
10:51:15
куки надо пробросить
а как куки пробросить?

Igor
29.10.2016
10:56:49
ты че делаешь, http-запрос? через какую библилотеку, requests?

tufedtm
29.10.2016
11:00:01
как работают в связке rabbitmq, celery, redis, мб еще чего кто, кому и какие запросы посылает и ответы получает?

Zart
29.10.2016
11:00:46
куки иксовой авторизации, хттп и питон тут вообще не при чем

Igor
29.10.2016
11:00:57
как работают в связке rabbitmq, celery, redis, мб еще чего кто, кому и какие запросы посылает и ответы получает?
селери - система очередей. ты ей отправляешь таски (например, "отправить письмо с текстом <...> на адрес example@example.com") она может использовать в качестве брокера (хранилища тасков, грубо говор) или rabbitmq, или redis. redis - маленькое и легкое key-value хранилище. это как словарь в питоне, только отдельным приложением и в виде сервера. если вкратце, то оно не очень предназначно для таких задач, которые использует селери. rabbitmq - мощная штука, которая как раз была предназначена для того, чтобы перекидываться сообщениями, хранить и обрабатывать все это говно. соответственно, цепочка такая твой сайт крутится на джанго и на нем уже столько юзеров, что если сделать отправку емейла просто во вьюхе, то это будут адские тормоза и сайт не будет справляться. поэтому ты подключил celery с redis'ом (к примеру). 1) пользователь нажал на ссылку "восстановить пароль", потому что он его забыл, и хочет получить емейл со ссылкой для восстановления. 2) ты гришь джанге - "создай таск - надо отправить этому долбоебу ссылку для восстановления аккаунта" django-celery (или кто там) создает в редисе новый ключик queue['restore_email'].append('dolboeb@gmail.com', 'http://example.com/restore/3098429385293084283/') 3) соседним процессом крутится celery worker (или несколько). они постоянно мониторят редис и кто-то из них увидел там новый таск. 4) берут этот таск (restore_email, dolboeb@gmail.com и ссылку) и выполняют функцию в твоем же проекте - send_restore_email('dolboeb@gmail.com', ....) 5) письмо уходит ??? профит

это можно было и погуглить

ultranoise ?
29.10.2016
11:17:22
ещо можно в celery-flower вживую мониторить таски

tufedtm
29.10.2016
11:17:31
круто, спасибо

а если таску выполнить не получилось?

Igor
29.10.2016
11:18:44
да не за что, но это очень грубо и в двух словах если получилось/не получилось, в любом случае можно указать callback-функции, которые будут выполняться при том или ином результате

да хотя бы вот, например

http://docs.celeryproject.org/en/latest/userguide/tasks.html#retrying

Johnnie
29.10.2016
11:20:42
селери - система очередей. ты ей отправляешь таски (например, "отправить письмо с текстом <...> на адрес example@example.com") она может использовать в качестве брокера (хранилища тасков, грубо говор) или rabbitmq, или redis. redis - маленькое и легкое key-value хранилище. это как словарь в питоне, только отдельным приложением и в виде сервера. если вкратце, то оно не очень предназначно для таких задач, которые использует селери. rabbitmq - мощная штука, которая как раз была предназначена для того, чтобы перекидываться сообщениями, хранить и обрабатывать все это говно. соответственно, цепочка такая твой сайт крутится на джанго и на нем уже столько юзеров, что если сделать отправку емейла просто во вьюхе, то это будут адские тормоза и сайт не будет справляться. поэтому ты подключил celery с redis'ом (к примеру). 1) пользователь нажал на ссылку "восстановить пароль", потому что он его забыл, и хочет получить емейл со ссылкой для восстановления. 2) ты гришь джанге - "создай таск - надо отправить этому долбоебу ссылку для восстановления аккаунта" django-celery (или кто там) создает в редисе новый ключик queue['restore_email'].append('dolboeb@gmail.com', 'http://example.com/restore/3098429385293084283/') 3) соседним процессом крутится celery worker (или несколько). они постоянно мониторят редис и кто-то из них увидел там новый таск. 4) берут этот таск (restore_email, dolboeb@gmail.com и ссылку) и выполняют функцию в твоем же проекте - send_restore_email('dolboeb@gmail.com', ....) 5) письмо уходит ??? профит
Охуенно, спасибо

Google
Zart
29.10.2016
11:22:45
суть всей этой конструкции в том, чтобы перенести обработку долгих вещей в отдельный процесс

Igor
29.10.2016
11:23:06
ага, чтоб не блокировать саму джангу

а то емейл, например, пока сформируууется, пока отпрааавится

Zart
29.10.2016
11:23:41
если вебсервер будет заниматься этим - то либо браузерам будет очень долго отдаваться ответ. либо если заниматься этим после отдачи ответа, то рабочие потоки/процессы вебсервера будут заняты не хттп работой

есть пачка вариантов как этого избежать

/dev
29.10.2016
11:24:36
Асинхронная стрельба асинхронными пулями

Zart
29.10.2016
11:26:12
в любом случае надо вынести обработку отдельно очереди сообщений, когда веб-приложение вместо работы просто передает запрос - либо очередям типа кролика/0мк/мсмку и т.п. либо по хттп другим серверам - архитектура микросервисов

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

Pavel
29.10.2016
11:29:21
а что удобнее/лучше, rabbit или redis? Или от ситуации заивист?

Zart
29.10.2016
11:29:42
если нужды достаточно простые - послать запрос, получить ответ когда пришел - то прикручивать можно любую систему напрямки если нужно много специфического функционала (роутинг, дюрабилити) - то возможно лучше завязаться на конкретную очередь если же примерно пофиг - целери, чтобы оно на себя все проблемы взяло

Zart
29.10.2016
11:30:18
ну есть люди, которые делают очередь сообщений напрямую на sql

Zart
29.10.2016
11:31:30
редис сам по себе не очередь, но предоставляет примитивы, достаточные для её создания

Many developers use Redis as a message queue, often wrappered via some library abstracting away Redis low level primitives, other times directly building a simple, ad-hoc queue, using the Redis raw API. This use case is covered mainly using blocking list operations, and list push operations. Redis apparently is at the same time the best and the worst system to use like that. It’s good because it is fast, easy to inspect, deploy and use, and in many environments it was already one piece of the infrastructure. However it has disadvantages because Redis mutable data structures are very different than immutable messages. Redis HA / Cluster tradeoffs are totally biased towards large mutable values, but the same tradeoffs are not the best ones to deal with messages.

Igor
29.10.2016
11:33:45
при всем при этом если ты внезапно вырубишь сервак с редисом, он может не успеть сдампить данные на диск (он вообще не обязан это делать, он в первую очередь в RAM данные хранит) и че-нибудь да проебется

Zart
29.10.2016
11:33:46
в то время как кроль - это именно MQ

Pavel
29.10.2016
11:34:38
у нас в приложении просто сейчас уже разные задачи есть, пока все веб-сервер делает, но я уже скоро буду начинат разгружать его. Там задачи типа отправки разного рода писем на email и долгий импорт данных из файла в БД. Файл загружает юзер через веб форму и начинаетждать, пока пройдет импорт. Поэтому присматриваюсь потихоньку, какие лучшие практики есть для решения этой задачи.

Igor
29.10.2016
11:35:18
кстати, кроме celery + rabbitmq/redis есть еще RQ http://python-rq.org/ он выглядит очень круто, но я с ним дела не имел еще

я думаю, для новичка он подойдет лучше всего, ибо простой как палка (как фласк %))

Zart
29.10.2016
11:36:14
кстати, кроме celery + rabbitmq/redis есть еще RQ http://python-rq.org/ он выглядит очень круто, но я с ним дела не имел еще
это пример очередной обвязки вокруг редиса. цитата выше была от автора другой обвязки - https://github.com/antirez/disque

Google
tufedtm
29.10.2016
11:36:25
http://docs.celeryproject.org/en/latest/userguide/tasks.html#retrying
а если я аппендил в бд тучу инфы (1гб или больше) часть уже добавилась, но таск упал обычный retry в try-except не поможет ведь, он начнет сначала и в бд появится мусор

Zart
29.10.2016
11:36:58
не надо рассказывать про нехуй -_-

Igor
29.10.2016
11:37:19
а чо(

Zart
29.10.2016
11:38:04
мало ли какие задачи бывают. вон, может в олап надо заливать дампы базы на многогигабайт

Admin
ERROR: S client not available

Zart
29.10.2016
11:38:29
но если ктото это делает с веба...

Igor
29.10.2016
11:39:19
я те по секрету скажу - я это делаю :) и, кстати, в случае с кликхаусом (яндексовская OLAP субд) все запросы к ней делаются по HTTP

так вот, есть, к примеру, POST-запрос с INSERTом 100к строк в CSV. это, ну, скажем, 100 мегабайт. знаешь, че будет, если в 49683ой строке проебалась кавычка и СУБД не смогла ее распарсить нормально?

СУБД скажет "ой, бля, здесь ошибка, иди ты нахуй, не буду я ниче инсертить"

там нет транзакций. в принципе.

Zart
29.10.2016
11:41:15
мне тут про яндекс сегодня прилетело в социалочках - https://www.facebook.com/lobachev.eugene/posts/858968810906969

Igor
29.10.2016
11:43:47
(кстати, 100 мегабайт CSV сжимается gzip или deflate, превращается в ~2-5 мб и принимается сервером меньше, чем за секунду)

Zart
29.10.2016
11:44:06
охуительные новости, да

Igor
29.10.2016
11:44:15
спасибо!

Zart
29.10.2016
11:44:29
а у меня дамп мускля в 2гб жмётся в 150мб гзипа

Igor
29.10.2016
11:46:17
ну вот. сделал insert - кх выпал в осадок^W эксепшен, ты залисал в лог/sentry, че не так, и пошёл дальше. а из лога/sentry уже потом посмотришь, разберешься, поправишьш и импортнешь еще раз

Google
Igor
29.10.2016
11:47:10
в итоге целого куска данных в БД нет, ну, это печалька конечно, но че поделать. зато КХ сам за тебя все роллбэкнул. не инсертнулось ничего.

tufedtm
29.10.2016
13:02:55
а что по поводу gaerman'а скажете? пакет для питона смотрю устарел https://pypi.python.org/pypi/gearman/

gearman в целом устарел?

Pavel
29.10.2016
15:50:36
(запрыгивая в ушедший ?) python-rq няша. А в celery мне доставляет строка из документации про приоритеты тасков: The usual way to prioritize work in Celery, is to route high priority tasks to different servers.

dmks
29.10.2016
15:54:42
Комплексный подход, ничего не скажешь

53r63rn4r
29.10.2016
16:11:13
а у меня дамп мускля в 2гб жмётся в 150мб гзипа
Помню на прошлой работе гзип дамп бд - 4 гб

Разворачивалась 2 дня

А тимлид с ссдшником такой: странно, у меня быстрее

Igor
29.10.2016
16:12:01
лол

Levent
29.10.2016
16:14:59
Я не понял. Че от меня опять хотят? http://i.imgur.com/WOLR0Rk.png

equal to the slice

Я не понимаю смысла в данной фразе

Igor
29.10.2016
16:16:38
slice - отрезок строки/массива например, s = "qwertyuiop" print s[1:5] # wert

Igor
29.10.2016
16:18:04
не за что ) там на скриншоте выше объясняется в 03. a slice of "Charlie" - s[1:4]

Zart
29.10.2016
16:18:59
они хотят не печать а присваивание

т.е. чтобы результат был в переменной а не на выводе

Levent
29.10.2016
16:19:37
http://i.imgur.com/YzVy2XP.png

Страница 645 из 1885

Эта группа больше не существует Эта группа больше не существует