目前想到的是
1
TimePPT 2021-04-27 12:35:05 +08:00
如果仅仅是简单任务,最简单的就是 crontab 起个定时任务,到点了调用下 Python 脚本
如果是 Python Server 定时任务,方法很多 |
2
troilus 2021-04-27 12:44:20 +08:00 1
crontab, 特别好用
|
3
masterclock 2021-04-27 13:18:12 +08:00
简单任务 cron 、systemd
巨复杂的 airflow 类工作流引擎 自定义的 temporal 、cadence |
6
xgq89757 OP @masterclock 主要是想搞具体到日期的一次性任务,后面这些还都没听说过,我顺便学下。
|
7
bigpigeon 2021-04-27 14:11:12 +08:00
写个脚本
sleep xxx do some thing |
8
0ZXYDDu796nVCFxq 2021-04-27 14:13:17 +08:00 via Android 1
不要用 cron,用 at
|
9
SjwNo1 2021-04-27 14:13:21 +08:00
在脚本里限制执行条件不就可以了吗
|
10
xanawang 2021-04-27 14:15:36 +08:00
那就一个骚操作吧 脚本的最后调用系统命令把 crontab 那行删掉再把自己删掉
|
11
sujin190 2021-04-27 14:16:23 +08:00 1
|
12
xgq89757 OP @gstqc at 不错,学到了。
mysql 的事件可以做一次性任务,较复杂的业务可能要结合存储过程,貌似很多公司不建议用 事件和存储过程。 |
14
yqmac 2021-04-27 14:51:22 +08:00
crontab 里面指定执行的年月日时分秒以后还能重复执行?只能执行一次了
|
16
WeKeey 2021-04-27 17:01:42 +08:00
RabbitMQ 延时队列
|
17
timethinker 2021-04-27 17:03:37 +08:00
按照你想到的这两种方法,我觉得第一种是可行的,定时扫描任务表,处理任务,然后删除或标记为已处理。
这样当你处理任务的时候,参与事务,如果任务处理失败,下一次定时扫描还可以重试(因为任务的删除操作或标记操作随着失败被一同回滚了,因此下一次执行仍然可以达成执行条件)。 取决于你目前现有的技术框架,如果增加一个这样的定时任务表很简单的话那就按照简单的来做。 |
18
mlcq 2021-04-27 17:10:09 +08:00
Scheduled 指定几月几日,然后代码里做个判断,满足条件才执行,一年最多就做一次判断吧,也没关系了
|
20
zhoudaiyu 2021-04-27 19:58:47 +08:00 via iPhone
Celery 啦
|
21
gengzi 2021-04-27 23:16:56 +08:00
crontab
|
22
fiypig 2021-04-28 07:49:04 +08:00 via iPhone
定时器开关呗,还可以设置时间,开关
|
23
guancyxx4king 2021-04-28 09:11:58 +08:00
celery 延时任务
|
24
no1xsyzy 2021-04-28 12:26:15 +08:00
celery
话说,cron/crontab 如果系统是关闭状态就无法启动 at 似乎能在启动后第一时间(或者如果用了 batch 或者大写字母开头的队列名的话是启动后的空闲时间)发动任务 |
25
danseguang 2021-04-28 17:28:06 +08:00
方法:
1.crontab 配置触发时间 2.数据库中有一个 status 字段控制任务状态,eg: 0 未执行,1 已执行-成功,2 已执行-失败,3 正在执行 触发时间到,先将 mysql 中的状态变为 3,避免其他人执行,执行完成后,再根据具体状态回写 mysql |
26
xgq89757 OP 感谢大家题的方案,发现 apscheduler 不错。date 方式可以满足需求
|