
Анастасия Чумакова
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:18

Aculust
03.10.2017
18:10:27

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

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)
Это Упрощенный вариант
Можно класс унаследовать, там да, переопределять функции

Aculust
03.10.2017
18:28:28

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