Anonymous
там кетчить точно не вариант
Aleksandr
Поток тоже селери?
Aleksandr
Или настоящий?
Anonymous
Не понял
Aleksandr
Сабтаск или тред?
Anonymous
Ебу, не моя библиотека, знаю методы push/get и всё
Anonymous
или ты про целери?
Anonymous
поискать надо тогда
Anonymous
Думаю классом тогда описать задачу что ли
Aleksandr
Ты в селери вызываешь некоторый таск, тот что-то делает и генерит саб селери таск, или просто какой то тред?
Anonymous
второе, >какой-то тред
Anonymous
в итоге у меня такая ебень: [2017-10-03 19:51:21,554: WARNING/ForkPoolWorker-9] Exception in thread RThread:
Anonymous
Когда опишу классом, надо будет прилипить что-то по типу on_failure, только on_warning а там уже "Exception in thread" in msg
Anonymous
а там мб как-то швырануть ошибку для celery.. Правда гребу, доки читаю и найти не могу
Aleksandr
Ну если состояния при ошибки не меняется) можешь как в прошлый раз ретракт и аск лейт
Anonymous
http://docs.celeryproject.org/en/latest/userguide/tasks.html#Task.acks_late Понять что-то не могу за эти acks_late
Anonymous
Зачем они?)
Aleksandr
Ну тут зависит кто бэкенд для селери
Anonymous
redis
Aleksandr
Amqp если, то там таск считается выполненным, если сообщение помечено этим ask
Aleksandr
Редис из коробки так не умеет, но сам селери возможно это реализует, не тестил
Aleksandr
В общем виде это означает - таск считается выполненым Когда проставлен ask. По умолчанию он ставится в момент взятия задания,, а не его выполнения
Aleksandr
Ask late, ставит когда выполнено
Anonymous
Повторно же может взять другой воркер, да?
Anonymous
на другом сервере к примеру
Aleksandr
Пока ретраи не иссякнут или не выполнится
Anonymous
Очень не желательно
Aleksandr
Очень не желательно
Единовременно задача 1воркером будет выполнятся в любом случае
Anonymous
их может быть несколько.. Хм. Надо всё же понять как ловить варнинги с какого-то таска
Aleksandr
Если он умрет, и таски не выполнена, то возьмёт другой
Anonymous
https://gist.github.com/darklow/c70a8d1147f05be877c3 Тут кажется есть что-то полезное. Варнинг схватит операция on_failure?
Aleksandr
Да
Aleksandr
Exception
Anonymous
То что нужно тогда. Сейчас перепишу на классе
Aleksandr
Это можно обычным трай кетчем сделать с bind true
Anonymous
куда трай-то?
Aleksandr
Просто у таска надо self дописать в аргументы
Anonymous
Отедельный поток и там уже ошибка которая не выплывает в главный поток
Anonymous
http://docs.celeryproject.org/en/latest/userguide/tasks.html#task-inheritance
Anonymous
base=MyTask
Anonymous
Тут заинтересовало
Aleksandr
@task(bind=True) Def task(self, Arg): Try: Code here Cath Exception as e: Self.retry(e)
Aleksandr
Это Упрощенный вариант
Aleksandr
Можно класс унаследовать, там да, переопределять функции
Aleksandr
Ещё как)
Anonymous
Серьёзно, нет
Anonymous
В отдельном потоке вылетает
Anonymous
он fork'ается что ли, не понимаю
Aleksandr
Если там отдельный тред внутри без join, то оно нормально никак не скетчится
Anonymous
просто операция вызывается и на главный поток не вылазит
Anonymous
просто тут вылезло на наружу такая ошибка, хотя except стоит
Aleksandr
Делай в таске join этого треда
Aleksandr
И будет кетчится
Anonymous
Мне два метода дают
Anonymous
я их дёргаю
Anonymous
а остальное считай запривачено
Anonymous
погодь, сейчас протестирую c base
Aleksandr
Треду поигу как ты его вызвал, он делает что-то , если селери таск его не ждет - он просто будет тупит пока не сможет помереть
Aleksandr
И его ошибка останется в треде
Aleksandr
Крч надо смотреть че там происходит на самом деле, и нужен ли там селери таск вообще
Aleksandr
Селери часто кажется удобней чем есть)
Anonymous
Мне показалось лучше сделать многопоток на целери, чем на питоновских библиотеках ещё, плюс два зайца убиваются с распределёнкой)
Anonymous
там потоки дохнут просто на операциях
Anonymous
а пулом задач не солидно
Aleksandr
Крч сделай тест без селери, научись ловить ошибки так
Aleksandr
Внутри таска они будут также
Aleksandr
А уже потом крути ретраи, или из источника вызывай повторно, смотря как оно у тебя правильней
Anonymous
задачи ещё дохнут
Anonymous
зависают
Anonymous
))
Aleksandr
Вот редис вместо рабита- не солидно
Aleksandr
Редис как результ бэкенд - норм
Anonymous
рабит там торчит в качестве брокера. Или ты про что?
Anonymous
Бакэнд у меня редис
Aleksandr
Да
Anonymous
+ убиваются несколько других задач