|
|
Celery 项目 , Celery 框架的详细技术参考和使用指南
5 z. K1 ~% ]$ s+ a' ]9 p1 o$ V5 z8 H* V, \! u1 m1 h {% ]. L; G
https://github.com/celery/celery: a* O3 j# f7 W- r$ i
Celery - 分布式任务队列
9 J8 w0 s, @5 s& \Celery 是一个简单、灵活、可靠的分布式系统,用于处理大量消息,同时为运维人员提供维护此类系统所需的工具。
$ ?6 ]$ v. w% S8 X* o8 a" M, c0 s
' m+ w- I1 ]" e* t2 B* F9 \4 z这是一个专注于实时处理的任务队列,同时也支持任务调度。8 X3 \8 C' T( H1 o1 p. f
& {. _$ D3 |& Q2 B4 }
Celery 拥有庞大而多元化的用户和贡献者社区,欢迎随时提问或参与其中。' v- c: ?, V( m, w' G! e- v; ~8 _
1 X" d2 k- `3 E& x* h( [
Celery 是开源软件,并根据BSD 许可证授权。
9 e# N. L% C) F) y4 h; y3 C3 E4 \
任务队列是一种将工作分配到各个线程或机器上的机制。. X z( {% m' ]5 I# L8 y. C
: {% Q' X+ C0 z+ b0 J: h
6 O( k, k! s1 R; j7 z( [; E任务队列的输入是一个工作单元,称为任务,专门的工作进程会不断监视队列,寻找新的工作来执行。
$ n) [7 {( T/ g! C6 C" I3 C+ Z9 } D. C+ u
% k5 |$ W# ]% j5 V
Celery 通过消息进行通信,通常使用消息代理(broker)作为客户端和工作进程之间的桥梁。要发起一项任务,客户端会将消息放入队列,然后消息代理会将消息传递给工作进程。
7 U% z: f( D7 [9 l, V& C/ Z! E- ?" e6 h+ B9 ~" K( V% G
, m" R( T c4 m2 I. d5 n% X7 E, u
Celery 系统可以由多个工作进程和代理组成,从而实现高可用性和横向扩展。
2 \( C% t% v' D ~) g: B
( H" @4 v" T+ ?, X$ [; L! Y: d6 _ _# _, u2 r1 z% X
Celery是用Python编写的,但其协议可以用任何语言实现。除了Python之外,还有用于Node.js的node-celery 、 PHP客户端、gocelery、用于Go的gopher-celery以及用于Rust的rusty-celery。. E; F. M$ q+ ]9 g
' P/ r* m, G1 O& C4 `9 _2 b& ]# t+ l. L+ k+ F
也可以通过使用 webhook 来实现语言互操作性,客户端可以将 URL 排入队列,以便工作进程请求该 URL。% Y! B* X4 U8 N$ X
7 q7 m. ^/ \; q( W, y8 E+ Z; _+ S! l
* u3 C% A3 u9 a: U9 X/ C
|
|