RT 不知道是不是个人见识比较少 感觉国内用 python 的远不及 java 的多。。。然后同理导致使用 Celery 的公司也很少。。。
同事们好多都是表示没听说过这个东西=-=
面试的时候好不容于遇到一个用这个的。。。只会用这个发邮件。。。问点消息中间件 /Celery 是如何处理一个 task 的就 GG
个人感觉这个东西是类似调度系统来离线 /异步去执行各类任务的 而且感觉 learning curve 也不高呀。。。咋没啥人用
用 Celery 的筒子们举起你们的小手手!
1
zhuangzhuang1988 2018-10-01 22:43:48 +08:00
动态语言没啥用.
|
2
lfzyx 2018-10-01 22:44:31 +08:00
只会用 celery 发邮件的🙋♂️
|
3
ericls 2018-10-01 22:58:49 +08:00 via iPhone
挺多的啊 这个几乎是行业标准
|
4
Yeungsin 2018-10-01 23:04:40 +08:00
我们在用,不过 worker 太多,撑不住,把 celery 好几个功能都关了,差不多当成普通 MQ 了
|
5
zwh2698 2018-10-01 23:08:13 +08:00 via Android 1
从稳定性说 Java 确实优于 python,尤其是大量用户的时候,Java 更有优势
|
6
Yeungsin 2018-10-01 23:09:05 +08:00
想起来 4.2.0 有一个内存泄露的 bug 还在等着修复😔
|
7
Zzdex 2018-10-01 23:09:32 +08:00
只用 celery 来发邮件,处理定时任务,更深的没研究过,,,
|
10
20150517 2018-10-01 23:37:35 +08:00
因为正常人都用比如 aws sqs 这种云集成的服务,单独开这个不合算
|
11
0xABCD 2018-10-02 00:00:42 +08:00 via Android
用 py 的人这个应该要知道吧
|
12
0ZXYDDu796nVCFxq 2018-10-02 00:28:22 +08:00 via Android
我们用得多,大厂
|
13
neoblackcap 2018-10-02 00:36:36 +08:00 2
其实是跟编程语言相关的,虽然 celery 说自己也是一个 actor 框架,任务队列。但是相对于 Java,你说 actor 框架,他们有 akka,任务队列也不少。还有就是队列什么他们一个都不少,有真线程,最简单的难道不是开一个线程去干,干完了就同步一下以及回调吗?
|
15
Eds1995 2018-10-02 01:40:19 +08:00 via Android
celery 坑还是蛮多的,特别定时任务,我们一般用来做定时任务,还有数据导入导出。
|
16
Eds1995 2018-10-02 01:44:50 +08:00 via Android
还有就是 celery 不支持 redis cluster 集群模式,导致 redis 集群只能用 Sentinel
|
18
blless 2018-10-02 03:03:13 +08:00 via Android
额 真需要强事务写数据库就好了吧…我是想不出使用场景
|
19
janxin 2018-10-02 07:48:08 +08:00
用 Java 的确实比 Python 多,这没什么奇怪的呀
|
20
noobsheldon 2018-10-02 08:16:43 +08:00 via Android 1
celery 的任务队列不是就把消息队列包一层,然后帮你写好了生产者和消费者吗?你调 task.delay()的时候,MainProcess 把调用函数及参数序列化一下,然后 WorkerProcess 再反序列化一下调用信息,找到对应的 task,并使用得到的参数进行调用。个人的一点看法,交流一下。
|
21
ashin 2018-10-02 09:58:16 +08:00
感觉 celery 自身一点都不稳 issue 里面好多 bug 的样子,感觉还是比较重又容易出问题,可能是我太菜,现在用的 worker 使用 gevent 的模式每次启动后差不多 3 分钟后的样子就会稳定的报一次连接 mq 的错误,然后再也不发生,对业务貌似没有实际影响,prefork 的话大概 15 分钟发生。而且 flower 现在也有 bug 的样子 页面点 worker 根本进不去,其他都正常
|
22
GoLand 2018-10-02 11:23:39 +08:00 via iPhone
我们公司也重度使用 celery 吧,中等厂。挺好的。
|
23
zhangsen1992 2018-10-02 14:06:31 +08:00
我记得 zhihu AD 都用过这个吧
|
24
akmonde 2018-10-02 15:43:19 +08:00
关键 v 站玩这个的也不算多...
|
25
zhengxiaowai 2018-10-02 17:25:34 +08:00 1
celery 坑太多真的太多,异步任务可以使用消息队列替代,定时任务那就更多了。
celery beat 添加修改任务,必须要重启,这个太坑了 |
26
scriptB0y 2018-10-02 17:50:10 +08:00
我一开始也基本是个项目都需要用 Celery,后来发现 uWSGI 自带了一个简单的 Spooler 可以处理大部分异步任务和周期运行的任务( 2min 以内可以)
https://www.kawabangga.com/posts/3101 |
27
qq976739120 2018-10-02 20:27:35 +08:00 1
我到现在都没学会怎么用 celery 往指定的 exchange 发消息...所以干脆自己封装了一个,还蛮好用的
|
28
fatpa 2018-10-02 23:59:29 +08:00
搭配 redis 做消息对列,基本就可以实现一个定时 scheduler 和一堆无限拓展的 woker 了,之前做监控和消息推送用这样的方案实现
|
29
Ehco1996 2018-10-03 09:15:09 +08:00
我们这也重度依赖 celery
比较可怕的是我们居然用他做数据同步 逃 |
30
kingfighters 2018-10-03 09:19:09 +08:00
@fatpa 为什么用 redis 做消息队列,不该用 rebbitmq 么?其实可以了解一下 airbnb 开源的 airflow,之前搭过一个类似的系统,不过当然没有 airflow 那么功能全,也是业务场景不需要。。
|
31
liudi1990 2018-10-03 12:48:09 +08:00
Robinhood 在用 并且主要的 contributor 在他家 fte 你感受一下
|
33
YaphetYin 2018-10-04 02:33:38 +08:00 via iPhone
踩了不少坑,最奇葩的一个是 4.2 下 chunks.group.skew 竟然需要 eval 一下才能正确执行,感觉不到测试的气息。看有人已经提了 issue,4.3 会修复。还有他家文档极其不友好,什么 status,state,这种一些类似的属性都不给说明,用得心累
|
34
lolizeppelin 2018-10-04 12:46:03 +08:00
直接拿 openstack 相关代码用 用什么 celery
作者家的 kombu 还是不错的 233 |
35
eloah 2018-10-04 15:38:44 +08:00
之前用过......
生产环境上内存泄漏,调度停止什么的不要太多,提了 Issue 修复也不发版本 反正我是觉得挺坑的 |
36
ytmsdy 2018-10-04 16:04:52 +08:00 via iPhone
之前用 celery 做异步队列,结果在做异步推送的时候碰到 bug。4 万多个设备每个设备推送了 9 个一样的通知,被老板骂死。然后再也不敢用 celery 了。
|
37
fushall 2018-10-04 17:38:37 +08:00
目前的实习公司目前准备从 celery 转到 dask
|
39
hotea 2018-10-04 22:26:26 +08:00
复杂的异步任务用 celery,一般的用 rq 比较好,简单
|
40
kingfighters 2018-10-05 08:32:41 +08:00
@ytmsdy 后来用什么了?
|
42
sampeng 2018-10-05 12:49:22 +08:00 via iPhone
消息中间件一抓一大把有什么好奇怪的
|
43
ashCloud 2018-10-05 14:34:49 +08:00
python 还是外企用的多一点
|
44
fatpa 2018-10-06 00:03:53 +08:00
@kingfighters 并发量不那么高的时候,就没必要折腾那么多组件了,维护成本也是不小的
|
45
foxyier 2018-10-08 10:29:55 +08:00
路过的表示这东西坑很多,自己试玩了一个来月果断弃了
|
46
ytmsdy 2018-10-09 12:27:37 +08:00 1
|
47
gsw945 2018-10-09 12:50:22 +08:00 via Android 1
不知道大公司用什么,我用 APScheduler 加其它服务 替代 Celery 了
|
48
jerrychan807 2018-11-07 10:24:56 +08:00
@Eds1995 定时任务好多坑呀,如果用 UTC 时区,就正常运行。改成东八区时区,就不行了。你们有遇到这个时区的问题吗?我的用的 django-celery-beat
|
49
AlexMercerZ 2019-01-08 14:52:08 +08:00
@zhuangzhuang1988 没啥用你就别用 bb 啥
|
50
AlexMercerZ 2019-01-08 14:56:40 +08:00
@zhuangzhuang1988 因为你垃圾 所以你觉得没啥用
|
51
YuuuZeee OP @jerrychan807 我也遇到了 最后解决方式是用 crontabjob
|
52
TesterCC 2019-01-31 21:29:29 +08:00
用 celery 发邮件和处理定时任务的+1,另一个同事用来跑爬虫,目前开发中并没有什么特别深入的使用。主要也是担心不稳定。
|
53
noobsheldon 2019-04-17 06:53:11 +08:00 via Android
|
54
gsw945 2019-05-07 20:05:36 +08:00
突然收到感谢,受宠若惊,刚好后面写了一个 apscheduler + rpyc 的 Demo,GitHub 地址如下:
https://github.com/gsw945/schedule-system 工作中,定时任务和异步任务,我全部用 apscheduler 了,没有使用 Celery。 补充:如果异步任务的执行,需要进度更新通知,可以 job_id 为键,使用 redis 存储进度信息,或者使用 websocket 通知进度信息。 异步任务进度通知,曾经用过: 1. redis-py 的 redis.StrictRedis.rpush() 2. socket.io + python-socketio |