1
madpudding Jun 2, 2020
huey ?
|
2
swulling Jun 2, 2020
|
3
676529483 Jun 2, 2020 django 3.0 有个 django_simple_task,用 uvicorn 启动就可以用了,正在用,效果还可以
|
4
chi1st Jun 2, 2020
直接新起一个线程处理第三方接口问题不大
|
5
rogwan Jun 2, 2020 via iPhone
thread
|
6
tcpdump Jun 2, 2020
太重了是什么意思,装了硬盘变重了?
|
7
labulaka521 Jun 2, 2020
nq
|
8
Latin Jun 2, 2020
rq huey
|
9
qW7bo2FbzbC0 Jun 2, 2020
django-q
|
10
jabari Jun 2, 2020
rq
|
11
baocaixiong Jun 2, 2020
@tcpdump 老哥你要 xswl
|
12
SystemLight Jun 2, 2020
django 也很重啊,不如考虑下 tornado -_-
|
13
6d6f33 Jun 2, 2020
用 RQ 把,小、稳。
celery,我技术太菜,用做定时任务,在腾讯云服务器跑一段时间一点也查不出原因的就挂了,得手动重启。RQ 就活得好好的。 当然,celery 肯定配置都对,配了自动重启,反正查不出原因,只能怪自己太菜。 |
14
mrchi Jun 2, 2020
@SystemLight tornado 连 webserver 都带了,岂不是更重
|
15
wd Jun 2, 2020 via iPhone
不就自己起个 thread 跑么
|
16
Philippa Jun 2, 2020 via iPhone
我觉得你另外启动一个 project,worker,不需要 celery,用 http 和它通讯,通讯完它给你接口发送报告。以后谁都可以调它,不要这个功能直接干掉那个 worker 就好了,侵入性低,简单直接。
|
17
nonduality Jun 2, 2020
celery 占用内存确实很大,依赖的库很多,而且貌似会内存泄漏,起单一个 celery 进程可以超过 400M 内存。
|
18
nonduality Jun 2, 2020
Django 能用的还有 APScheduler 。
既能做任务队列又能做定时 /循环执行的,差不多只有 celery 。 |
19
ericls Jun 2, 2020 via iPhone
如果真的是那种无所谓的任务 我来自荐下我的 django_simple_task
注意你最好调整一下并发限制。另外如果把 API 请求用 asyncio 写 overhead 会小一些 |
20
ericls Jun 2, 2020 via iPhone
起个线程也可以 但是最好有个线程池
|
21
ClericPy Jun 2, 2020 这种量级没什么必要走消息队列吧
这就个位数的任务, 也不用非得启动 celery 那么重吧 最最简单的, 生产者消费者模式: 启动服务的时候丢一个多线程后台跑着消费 Python 自带的 queue, 然后 api 被调用的时候把相关参数传入 queue 里去, 又线程安全, 又避免高并发出问题(可以加个 sleep 避免触及第三方 api 的 rate limit) 如果需要并发, 那这个 background 就可以换成 thread executor, api 被调用的时候无脑给 pool 里 Submit 一个函数+参数就可以异步启动了 不过如果 Django 经常要重启, 这就没法持久化 Callback 的参数了, 确实该用 celery 或者消息队列... |
22
ynkkdev Jun 2, 2020
我的 celery 安安静静的跑了有一整年了,暂时没有看出啥问题。。。动态修改周期性任务执行计划还是挺香的
|
23
HuberyPang Jun 2, 2020
@ericls 老哥,请教下。django view 中启动线程,怎么配置线程池啊。每一次请求 view,就是开启了一个线程(我这么说没错吧),那么当线程池用完了,这时在有访问 view,会阻塞吗
|
24
aladdindingding Jun 2, 2020
单独起一个线程就好了
from concurrent.futures import ThreadPoolExecutor executor = ThreadPoolExecutor(5) executor.submit()立马就有返回的 不会阻塞 |
25
HuberyPang Jun 2, 2020

|
26
DonaidTrump Jun 2, 2020
我这 celery + rabbitmq 跑了 5 年多了,从 python2 跑到 python3,一直很好用啊,没感觉有多重
|
27
Ritter Jun 3, 2020
rq
|
29
gjquoiai Jun 3, 2020 via iPhone
dramatiq
|
30
ericls Jun 3, 2020
|
31
skywatcher Jun 3, 2020
需求简单,但是看你要不要满足高可用。比如任务失败是否重试,任务丢失能否接受(机器挂了,服务重启了)。项目不大能简单切换,可考虑用异步 io 框架,应该都不需要线程池,框架本身支持,比如 tornado, fastapi 。Django 的话启动 http server 时启动一个线程池,在 api 调用时使用线程池执行即可。再者如果任务比较多,线程池有压力,可以考虑额外启动几个消费进程与 http 服务进程共享 queue,用 queue 来分发任务,消费进程获取任务执行。如果你要考虑到任务的管理(失败重试、任务不丢失、任务状态),那就考虑 celery,mq 等中间件
|
34
jswh Jun 3, 2020
起个线程自己做一下好了,反正是 python,又不是 PHP
|
35
ytymf Jun 3, 2020
Huey,很小很稳。定时异步都支持。。。。
|
36
macrosea Apr 23, 2021
围观
|