Автор: Роман Иманкулов (doist.io)
Когда необходимо заставить веб-приложение выполнить тяжелую работу без ухудшения user experience, или нужно по-быстрому собрать кластер на коленке, возникает потребность в распределенном выполнении очередей команд. В докладе будут рассмотрены варианты организации таких очередей подручными средствами, будет выяснено, чем так хорош Celery, есть ли у него достойные альтернативы, и как написать рабочий менеджер очередей в тридцать строчек кода.
6. CELERY — ИСПОЛЬЗОВАНИЕ ТРИВИАЛЬНО
Создали задачу (myworker.py)
fo clr ipr Clr
rm eey mot eey
ap=Clr(tss,boe=rds/' bced'ei:/)
p
eey'ak' rkr'ei:/, akn=rds/'
@p.ak
apts
dfsma b:
e u(, )
rtr a+b
eun
Запустили worker
$clr wre -apmwre
eey okr -p=yokr
7. CELERY — ИСПОЛЬЗОВАНИЕ ТРИВИАЛЬНО
Запустили задачу и получили результат
>>aycrsl =smdly2 2
> sn_eut
u.ea(, )
>>pitaycrsl.e(
> rn sn_eutgt)
4
8. CELERY — ОТЛОЖЕННОЕ ВЫПОЛНЕНИЕ
КОМАНД
Задача будет выполнена не раньше, чем через 3 секунды
>>smapyayc(,2,cuton3.e(
> u.pl_sn(2 ) ondw=)gt)
9. CELERY — ПОВТОРНОЕ ВЫПОЛНЕНИЕ
КОМАНД
В случае неудачи задача будет выполнена повторно
@p.akbn=re mxrtis3
apts(idTu, a_ere=)
dfgtulsl,ul:
e e_r(ef r)
ty
r:
rtr uli2ulpnul.ed)
eun rlb.roe(r)ra(
ecp IErra ec
xet Oro s x:
#ппооаьвплиьздч чрз3 ск
орбвт ыонт аау ее 0 е.
#веон бле3пптк
сг е ое
оыо
riesl.er(x=x,cuton3)
as efrtyecec ondw=0
10. CELERY — ЗАМЕНА CRON-А
Определяем задачи для запуска
apcn.EEYETSHDL ={
p.ofCLRBA_CEUE
'd-vr-0scns:{
adeey3-eod'
'ak:'ak.d'
ts' tssad,
'ceue:dttm.ieet(eod=0,
shdl' aeietmdlascns3)
'rs:(6 1)
ag' 1, 6
}
,
}
Запускаем Celery beat
$clr ba
eey et
12. CELERY CANVAS — ПЛАН АСИНХРОННЫХ
ОПЕРАЦИЙ
Цепочка команд: асинхронное последовательное выполнение
>>can=(d.(,2 |ads4 |ads8)
> hi
ads2 )
d.()
d.()
>>can)gt)
> hi(.e(
1
6
Группа команд: асинхронное параллельное выполнение
>>fo clr ipr gop
> rm eey mot ru
>>rs=gopadsi i frii xag(0))
> e
ru(d.(, ) o
n rne1)(
>>rsgttmot1
> e.e(ieu=)
[,2 4 6 8 1,1,1,1,1]
0 , , , , 0 2 4 6 8
... a ещё chords, maps, starmaps и много чего ещё, что вам,
возможно, никогда не пригодится.
15. RQ. ЗАПУСКАЕТ ВСЁ
1. Redis в качестве брокера и result storage
2. Нулевая настройка
3. Запуск любых импортируемых функций
4. Поддержка множества очередей
5. Простейшая система зависимостей задач
http://python-rq.org