Skip to content

Commit ba4c07f

Browse files
author
vimpas
committed
update
1 parent ddce92f commit ba4c07f

File tree

2 files changed

+85
-1
lines changed

2 files changed

+85
-1
lines changed
+84
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,84 @@
1+
---
2+
title: 'blinker 和 celery 的区别'
3+
date: '2024-09-13'
4+
tags: ['Celery', 'Signal', '异步任务', '事件驱动']
5+
draft: false
6+
summary:
7+
---
8+
9+
10+
## blinker和celery的区别
11+
12+
**功能和用途的对比**
13+
14+
> 其实就是同步和异步的区别
15+
16+
| 特性 | Blinker | Celery |
17+
|---------------|-------------------------------------------|-------------------------------------------|
18+
| 主要功能 | 信号和事件处理 | 异步任务队列和调度 |
19+
| 适用场景 | 事件驱动编程,组件间通信 | 处理耗时任务,定期任务调度 |
20+
| 复杂性 | 简单,易于理解和实现 | 较复杂,涉及任务队列、消息代理等 |
21+
| 任务执行方式 | 通过信号触发事件 | 通过任务队列异步执行 |
22+
| 依赖 | 无特定依赖 | 依赖于消息代理(如RabbitMQ、Redis等) |
23+
24+
**使用场景**
25+
26+
- **Blinker**适用于事件驱动编程和组件间通信的场景,例如:
27+
- 在Flask中解耦应用程序组件
28+
- 请求到来之前和请求结束之后的信号处理
29+
- 自定义信号处理
30+
31+
- **Celery**适用于处理耗时任务和定期任务调度的场景,例如:
32+
- 异步任务:发送邮件、推送消息等
33+
- 定时任务:每天定时执行某些操作
34+
- 处理大量数据的分布式任务
35+
36+
**工作方式的不同**
37+
38+
- **Celery**是异步的,通过消息机制进行通信,单独开一个线程去执行任务,不影响主程序的执行。适用于一些耗时任务,如发送短信、邮件等。
39+
40+
- **Blinker**是同步的,在主程序中直接触发事件,事件处理函数会在主程序中执行。适用于组件间的通信和事件处理。
41+
42+
**使用示例**
43+
44+
- **Blinker示例**
45+
```python
46+
from blinker import signal
47+
48+
started = signal('round-started')
49+
50+
def each(round):
51+
print(f"Round {round}")
52+
53+
started.connect(each)
54+
55+
for round in range(1, 4):
56+
started.send(round)
57+
```
58+
59+
- **Celery示例**
60+
```python
61+
from celery import Celery
62+
63+
app = Celery('tasks', broker='redis://localhost:6379/0')
64+
65+
@app.task
66+
def add(x, y):
67+
return x + y
68+
69+
result = add.delay(4, 4) # 异步执行
70+
```
71+
72+
**总结**
73+
74+
总的来说,**Blinker**主要用于事件通知和信号处理,适合需要组件间通信的场景;而 **Celery** 则是一个功能强大的异步任务处理框架,适合需要处理长时间运行任务的Web应用程序。选择哪个工具取决于具体的应用需求和场景。[1][3][8]
75+
76+
Citations:
77+
[1] https://www.cnblogs.com/tianzhh/articles/13673794.html
78+
[2] https://www.w3cschool.cn/article/74101304.html
79+
[3] https://developer.baidu.com/article/details/2951344
80+
[4] https://juejin.cn/post/6984986745456721950
81+
[5] https://www.cnblogs.com/traditional/p/11788756.html
82+
[6] https://www.cnblogs.com/goldsunshine/p/15426970.html
83+
[7] https://cloud.tencent.com/developer/article/1904772
84+
[8] https://blog.csdn.net/qq_39253370/article/details/116537069

data/blog/博客目录结构分析.mdx

+1-1
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ summary: 该博客目录结构分析
1919
```
2020

2121
## MDXComponents 组件分析
22-
把多个基础组件组合起来用于blog页面渲染mdx文件, 包括自定义的a标签, TOC, 代码块组件, 表格组件等
22+
把多个基础组件组合起来用于blogye mian渲染mdx文件, 包括自定义的a标签, TOC, 代码块组件, 表格组件等
2323

2424
# 数据目录:
2525
```

0 commit comments

Comments
 (0)