求助,求推荐 celery 的轻量级替代方案

2020-06-02 17:17:34 +08:00
 chaleaoch
特别简单的一个需求.
django view 里面非阻塞调用一个第三方的 api. 然后将返回值作为参数调用 callback.
view 里面直接返回 response 调用成功(第三方 api 返回什么无所谓).

类似于发送短信验证码一样的需求.

用 celery 太重了.
起个线程有问题吗?需要注意什么吗?
6570 次点击
所在节点    Python
36 条回复
madpudding
2020-06-02 17:26:19 +08:00
huey ?
swulling
2020-06-02 17:27:19 +08:00
https://github.com/rq/rq

这个就不错,另外代码写的也不错,可以学习下
676529483
2020-06-02 18:03:30 +08:00
django 3.0 有个 django_simple_task,用 uvicorn 启动就可以用了,正在用,效果还可以
chi1st
2020-06-02 18:21:10 +08:00
直接新起一个线程处理第三方接口问题不大
rogwan
2020-06-02 18:22:48 +08:00
thread
tcpdump
2020-06-02 18:29:02 +08:00
太重了是什么意思,装了硬盘变重了?
labulaka521
2020-06-02 18:35:36 +08:00
nq
Latin
2020-06-02 18:43:00 +08:00
rq huey
qW7bo2FbzbC0
2020-06-02 18:54:54 +08:00
django-q
jabari
2020-06-02 19:19:16 +08:00
rq
baocaixiong
2020-06-02 20:39:12 +08:00
@tcpdump 老哥你要 xswl
SystemLight
2020-06-02 20:43:45 +08:00
django 也很重啊,不如考虑下 tornado -_-
6d6f33
2020-06-02 20:45:35 +08:00
用 RQ 把,小、稳。
celery,我技术太菜,用做定时任务,在腾讯云服务器跑一段时间一点也查不出原因的就挂了,得手动重启。RQ 就活得好好的。
当然,celery 肯定配置都对,配了自动重启,反正查不出原因,只能怪自己太菜。
mrchi
2020-06-02 20:45:40 +08:00
@SystemLight tornado 连 webserver 都带了,岂不是更重
wd
2020-06-02 21:22:25 +08:00
不就自己起个 thread 跑么
Philippa
2020-06-02 21:28:49 +08:00
我觉得你另外启动一个 project,worker,不需要 celery,用 http 和它通讯,通讯完它给你接口发送报告。以后谁都可以调它,不要这个功能直接干掉那个 worker 就好了,侵入性低,简单直接。
nonduality
2020-06-02 21:49:48 +08:00
celery 占用内存确实很大,依赖的库很多,而且貌似会内存泄漏,起单一个 celery 进程可以超过 400M 内存。
nonduality
2020-06-02 21:53:29 +08:00
Django 能用的还有 APScheduler 。

既能做任务队列又能做定时 /循环执行的,差不多只有 celery 。
ericls
2020-06-02 22:00:25 +08:00
如果真的是那种无所谓的任务 我来自荐下我的 django_simple_task

注意你最好调整一下并发限制。另外如果把 API 请求用 asyncio 写 overhead 会小一些
ericls
2020-06-02 22:01:24 +08:00
起个线程也可以 但是最好有个线程池

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/677927

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX