@propython

Страница 88 из 228
Анастасия Чумакова
03.10.2017
15:01:09
Краб ходит E7
03.10.2017
15:26:33
Анастасия Чумакова
03.10.2017
15:27:48
О, приветик!
Проснулся))) я ж давно тут!)

Марк ☢
03.10.2017
15:31:05
Ну и ники у вас

Google
Марк ☢
03.10.2017
15:31:22
Слились в экстазе, блэт

Andre
03.10.2017
15:46:13
я тоже с вами

возьмите меня в свой экстаз

Марк ☢
03.10.2017
15:47:13
Тройничка решили замутить ?

Andre
03.10.2017
15:52:34
чем больше народу, тем экстазнее

Aculust
03.10.2017
17:17:04
Народ. У меня в celery есть библиотека которая создает другой поток в таске, а поток обожает ломаться. Можно как-то кетчить? [2017-10-03 19:51:21,554: WARNING/ForkPoolWorker-9] Exception in thread RThread:

Угу.. Нужно не "симптомы" лечить, а проблему. Скоро другой библиотекарь вылечит в свой либе эту траблу, но я хотел бы застраховаться.

Aleksandr
03.10.2017
18:10:33
Как так то?)

Aculust
03.10.2017
18:10:43
Потому что он на то и remote thread что не кетчится.

Думаю классом что ли описать задачу

Aleksandr
03.10.2017
18:11:13
Если есть откуда вызывать и ждать результат - так или иначе все кэтчится

Google
Aculust
03.10.2017
18:11:30
там кетчить точно не вариант

Aleksandr
03.10.2017
18:11:54
Поток тоже селери?

Или настоящий?

Aculust
03.10.2017
18:12:07
Не понял

Aleksandr
03.10.2017
18:12:19
Сабтаск или тред?

Aculust
03.10.2017
18:12:35
Ебу, не моя библиотека, знаю методы push/get и всё

или ты про целери?

поискать надо тогда

Думаю классом тогда описать задачу что ли

Aleksandr
03.10.2017
18:13:22
Ты в селери вызываешь некоторый таск, тот что-то делает и генерит саб селери таск, или просто какой то тред?

Aculust
03.10.2017
18:13:38
второе, >какой-то тред

в итоге у меня такая ебень: [2017-10-03 19:51:21,554: WARNING/ForkPoolWorker-9] Exception in thread RThread:

Когда опишу классом, надо будет прилипить что-то по типу on_failure, только on_warning а там уже "Exception in thread" in msg

а там мб как-то швырануть ошибку для celery.. Правда гребу, доки читаю и найти не могу

Aleksandr
03.10.2017
18:17:16
Ну если состояния при ошибки не меняется) можешь как в прошлый раз ретракт и аск лейт

Aculust
03.10.2017
18:19:17
http://docs.celeryproject.org/en/latest/userguide/tasks.html#Task.acks_late Понять что-то не могу за эти acks_late

Зачем они?)

Aleksandr
03.10.2017
18:19:47
Ну тут зависит кто бэкенд для селери

Aculust
03.10.2017
18:19:56
redis

Aleksandr
03.10.2017
18:20:22
Amqp если, то там таск считается выполненным, если сообщение помечено этим ask

Google
Aleksandr
03.10.2017
18:20:45
Редис из коробки так не умеет, но сам селери возможно это реализует, не тестил

В общем виде это означает - таск считается выполненым Когда проставлен ask. По умолчанию он ставится в момент взятия задания,, а не его выполнения

Ask late, ставит когда выполнено

Aculust
03.10.2017
18:22:15
Повторно же может взять другой воркер, да?

на другом сервере к примеру

Aleksandr
03.10.2017
18:22:27
Пока ретраи не иссякнут или не выполнится

Aculust
03.10.2017
18:22:41
Очень не желательно

Aleksandr
03.10.2017
18:23:32
Очень не желательно
Единовременно задача 1воркером будет выполнятся в любом случае

Aculust
03.10.2017
18:24:08
их может быть несколько.. Хм. Надо всё же понять как ловить варнинги с какого-то таска

Aleksandr
03.10.2017
18:24:16
Если он умрет, и таски не выполнена, то возьмёт другой

Aculust
03.10.2017
18:24:45
https://gist.github.com/darklow/c70a8d1147f05be877c3 Тут кажется есть что-то полезное. Варнинг схватит операция on_failure?

Aleksandr
03.10.2017
18:24:57
Да

Exception

Aculust
03.10.2017
18:25:24
То что нужно тогда. Сейчас перепишу на классе

Aleksandr
03.10.2017
18:25:46
Это можно обычным трай кетчем сделать с bind true

Aculust
03.10.2017
18:26:10
куда трай-то?

Aleksandr
03.10.2017
18:26:11
Просто у таска надо self дописать в аргументы

Aculust
03.10.2017
18:26:24
Отедельный поток и там уже ошибка которая не выплывает в главный поток

http://docs.celeryproject.org/en/latest/userguide/tasks.html#task-inheritance

Google
Aculust
03.10.2017
18:26:38
base=MyTask

Тут заинтересовало

Aleksandr
03.10.2017
18:27:39
@task(bind=True) Def task(self, Arg): Try: Code here Cath Exception as e: Self.retry(e)

Это Упрощенный вариант

Можно класс унаследовать, там да, переопределять функции

Aleksandr
03.10.2017
18:28:34
Ещё как)

Aculust
03.10.2017
18:28:41
Серьёзно, нет

В отдельном потоке вылетает

он fork'ается что ли, не понимаю

Aleksandr
03.10.2017
18:29:07
Если там отдельный тред внутри без join, то оно нормально никак не скетчится

Aculust
03.10.2017
18:29:08
просто операция вызывается и на главный поток не вылазит

просто тут вылезло на наружу такая ошибка, хотя except стоит

Aleksandr
03.10.2017
18:29:34
Делай в таске join этого треда

И будет кетчится

Aculust
03.10.2017
18:29:50
Мне два метода дают

я их дёргаю

а остальное считай запривачено

погодь, сейчас протестирую c base

Google
Aleksandr
03.10.2017
18:30:32
Треду поигу как ты его вызвал, он делает что-то , если селери таск его не ждет - он просто будет тупит пока не сможет помереть

И его ошибка останется в треде

Крч надо смотреть че там происходит на самом деле, и нужен ли там селери таск вообще

Селери часто кажется удобней чем есть)

Aculust
03.10.2017
18:33:15
Мне показалось лучше сделать многопоток на целери, чем на питоновских библиотеках ещё, плюс два зайца убиваются с распределёнкой)

там потоки дохнут просто на операциях

а пулом задач не солидно

Aleksandr
03.10.2017
18:33:53
Крч сделай тест без селери, научись ловить ошибки так

Внутри таска они будут также

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

Aculust
03.10.2017
18:35:44
задачи ещё дохнут

зависают

))

Aleksandr
03.10.2017
18:35:57
Вот редис вместо рабита- не солидно

Редис как результ бэкенд - норм

Aculust
03.10.2017
18:36:32
рабит там торчит в качестве брокера. Или ты про что?

Бакэнд у меня редис

Aleksandr
03.10.2017
18:36:37
Да

Aculust
03.10.2017
18:36:44
+ убиваются несколько других задач

Aleksandr
03.10.2017
18:36:55
рабит там торчит в качестве брокера. Или ты про что?
Это оно и есть, мы я не особо правильно сказал

Страница 88 из 228