Python 实现延时任务

2020-03-19 17:20:54 +08:00
 5TuNan

如题,现有一个需求创建一个资源,如果该资源创建成功,5 分钟后对这个资源做一定的操作。请问使用 Python 如何实现。

5755 次点击
所在节点    Python
25 条回复
DoubleShut
2020-03-19 17:25:28 +08:00
建议不要自己实现,可以用专业的队列,比如 rabbitmq,可以通过投递消息,设置消息过期时间,死信交换机,然后消费死信
2kCS5c0b0ITXE5k2
2020-03-19 17:27:17 +08:00
还是上专业的消息队列吧,...
Orenoid
2020-03-19 17:27:24 +08:00
celery
qile1
2020-03-19 17:27:52 +08:00
做一个操作是外部调用吗?内部能不能 time。sleep 五分钟然后执行,进程和线程通信就那几种方法
wzwwzw
2020-03-19 17:34:09 +08:00
celery 可以延迟执行吧,这个是简单的实现方式。
sujin190
2020-03-19 17:45:38 +08:00
https://github.com/snower/forsun

之前做过一个服务,高性能,用资源 ID 创建任务,到时发起动作,可以是 shell、http 请求、mysql 语句、redis 命令,可以使用 redis 持久化存储,不拍丢失,特别适合订单超时支付取消、配送订单超时之类的人物

当然也可也自己编写执行器扩展接入自己的项目里
Feedline
2020-03-19 18:41:32 +08:00
用 redis 吧,轻量级,快速
hmxxmh
2020-03-19 18:45:56 +08:00
用 Apscheduler,python 的异步任务调度框架
Leigg
2020-03-19 18:55:15 +08:00
不就是定时任务吗,找找对应方案
renyijiu
2020-03-19 18:59:22 +08:00
1. 简单的,落库,定时查询;
2. redis 的 zset,定时查询
3. 支持延时任务的消息队列

常见的几个方案
blackcurrant
2020-03-19 19:04:18 +08:00
time.sleep(300)
do()
zhoudaiyu
2020-03-19 20:21:49 +08:00
Celery 干就完了
Tink
2020-03-19 21:56:02 +08:00
sleep 一把梭
Hello0World
2020-03-19 22:11:27 +08:00
celery
lithbitren
2020-03-19 22:30:32 +08:00
非阻塞的等待,如果不想借助第三方库,最起码也得开个新进程独立等待。
Maboroshii
2020-03-19 23:41:09 +08:00
循环检查任务是否可以执行
labulaka521
2020-03-19 23:49:35 +08:00
time.sleep 300
LengthMin
2020-03-19 23:51:02 +08:00
https://github.com/agronholm/apscheduler
Advanced Python Scheduler

https://github.com/coleifer/huey
huey, a little task queue for python
cz5424
2020-03-20 00:39:45 +08:00
最简单就是 sleep 啦
euph
2020-03-20 00:49:55 +08:00
所以小白首先想到的就算 sleep 吗?第一次见各位大神各种骚操作

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

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

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

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

© 2021 V2EX