Email or username:

Password:

Forgot your password?
Top-level
Cyrmax

@mo
Это типа чтобы твой основной сервис не занимался фоновыми тасками?
А он умеет отдавать результат по готовности куда-то?
Или именно что пнул и работает, а результат неважен?

Мне просто как бы делать бы бэкэнд для распознавания речи для одного проекта. И там как раз пнуть бы чтобы работало, а результат сложить в БД, чтобы клиент потом по апи забрал когда ему надо будет.

13 comments
Мя :sparkles_lesbian:

@cyrmax я не знаю, я на рубях не писала

Мя :sparkles_lesbian:

@cyrmax но ты можешь просто сложить результат в бд прямо внутри фоновой таски

Cyrmax

@mo
Короче надо будет почитать подробнее про сию безусловно замечательную вещь :)
Пасиба :D

Cyrmax

@mo
А шо оно только под руби?
Как сказал японский классик: "нарубитокалохи!"
Я на гошечке пишу и на питоне, если быстро надо.

Мя :sparkles_lesbian:

@cyrmax ну для питона уже упомянули Celery. Который умеет не только возвращать результат, но и исполнять таски в соответствии с графом зависимостей их друг от друга

Для голанга не знаю, но что-то точно должно быть...в крайнем случае это легко навелосипедить с помощью Redis, делала, знаю :)

Мя :sparkles_lesbian:

@cyrmax причем для голанга это даже не обязательно должен быть отдельный воркер. У него нет проблем ни с асинхронностью, ни с многопоточкой, и воркеры-горутины можно запускать прямо из основного процесса. Что я и делала на Rust+Tokio

Мя :sparkles_lesbian:

@cyrmax ...чет внезапно поняла, что зная редис я могу очень легко построить свой сайдкик, лол. Такая простая штука...

Cyrmax

@mo
А ну вообще-то ты права.
Я просто думал о воркерах, которые могут пережить рестарт основного сервиса, типа очень очень долгоживущие.
Это для того, чтобы продолжать таски во время деплоя.
Но по идее это всё равно костыль и по-хорошему надо уже тогда делать load balancing со всеми вытекающими

Мя :sparkles_lesbian:

@cyrmax если у тебя гарантия "задача запускается как минимум один раз, но можно и больше", то это не слишком обязательно
просто при старте все задачи из множества "обрабатывается" перемещать в множество "к обработке"

Cyrmax

@mo
Вот я немножко не понял как такое намутить редиской?
Можно для новичка в бэкэндстве пояснить плиз?

Мя :sparkles_lesbian:

@cyrmax в редисе хранить какую задачу вызвать, и аргументы. А дальше пользоваться тем, что операции в редисе атомарны
воркер утаскивает задачу из пула доступных к себе на обработку (помечает её как в работе, если воркеров много то со своим айди), если обнаруживается что воркер помирал, то все задачи утаскиваются обратно в пул доступных, откуда их стащит себе воркер

Cyrmax

@mo
Ага, звучит понятнее.
Спасибо большущее

Мя :sparkles_lesbian: replied to Cyrmax

@cyrmax но я бы сначала посмотрела на готовые решения, они скорее всего есть. Делать задачи в фоне потребность довольно частая...

Go Up