如题,现有一个需求创建一个资源,如果该资源创建成功,5 分钟后对这个资源做一定的操作。请问使用 Python 如何实现。
1
DoubleShut 2020-03-19 17:25:28 +08:00
建议不要自己实现,可以用专业的队列,比如 rabbitmq,可以通过投递消息,设置消息过期时间,死信交换机,然后消费死信
|
2
2kCS5c0b0ITXE5k2 2020-03-19 17:27:17 +08:00
还是上专业的消息队列吧,...
|
3
Orenoid 2020-03-19 17:27:24 +08:00
celery
|
4
qile1 2020-03-19 17:27:52 +08:00 via Android
做一个操作是外部调用吗?内部能不能 time。sleep 五分钟然后执行,进程和线程通信就那几种方法
|
5
wzwwzw 2020-03-19 17:34:09 +08:00
celery 可以延迟执行吧,这个是简单的实现方式。
|
6
sujin190 2020-03-19 17:45:38 +08:00
https://github.com/snower/forsun
之前做过一个服务,高性能,用资源 ID 创建任务,到时发起动作,可以是 shell、http 请求、mysql 语句、redis 命令,可以使用 redis 持久化存储,不拍丢失,特别适合订单超时支付取消、配送订单超时之类的人物 当然也可也自己编写执行器扩展接入自己的项目里 |
7
Feedline 2020-03-19 18:41:32 +08:00
用 redis 吧,轻量级,快速
|
8
hmxxmh 2020-03-19 18:45:56 +08:00 via Android 1
用 Apscheduler,python 的异步任务调度框架
|
9
Leigg 2020-03-19 18:55:15 +08:00 via Android
不就是定时任务吗,找找对应方案
|
10
renyijiu 2020-03-19 18:59:22 +08:00 1
1. 简单的,落库,定时查询;
2. redis 的 zset,定时查询 3. 支持延时任务的消息队列 常见的几个方案 |
11
blackcurrant 2020-03-19 19:04:18 +08:00 via iPhone
time.sleep(300)
do() |
12
zhoudaiyu 2020-03-19 20:21:49 +08:00 via iPhone
Celery 干就完了
|
13
Tink 2020-03-19 21:56:02 +08:00 via iPhone
sleep 一把梭
|
14
Hello0World 2020-03-19 22:11:27 +08:00 via Android
celery
|
15
lithbitren 2020-03-19 22:30:32 +08:00
非阻塞的等待,如果不想借助第三方库,最起码也得开个新进程独立等待。
|
16
Maboroshii 2020-03-19 23:41:09 +08:00
循环检查任务是否可以执行
|
17
labulaka521 2020-03-19 23:49:35 +08:00 via Android
time.sleep 300
|
18
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 |
19
cz5424 2020-03-20 00:39:45 +08:00 via iPhone
最简单就是 sleep 啦
|
20
euph 2020-03-20 00:49:55 +08:00
所以小白首先想到的就算 sleep 吗?第一次见各位大神各种骚操作
|
21
linvaux 2020-03-20 09:37:12 +08:00
celery 了解一下
|
22
Dustyposa 2020-03-20 10:26:33 +08:00 1
|
23
coderEOS 2020-03-20 11:00:43 +08:00
crontab 1 分一次 + 然后存个文件列表 也可以
|
24
lithbitren 2020-03-22 02:26:55 +08:00
我佛了,复习了一下文档,直接 threading.Timer 创建任务再 start 就完事了,最直接简单,线程级异步非阻塞,主进程主线程干啥都不影响,时间一到就会开始响应,不怕影响 gil 不开新进程也无妨。
https://docs.python.org/zh-cn/3/library/threading.html#timer-objects |
25
Pegasus 2022-01-28 15:13:19 +08:00
|