请教一个问题,如何创建一个在指定时间执行的一次性任务。

2021-04-27 11:51:15 +08:00
 xgq89757

目前想到的是

  1. 轮训任务表
  2. 使用数据库事件,可能要结合存储过程
3063 次点击
所在节点    Python
26 条回复
TimePPT
2021-04-27 12:35:05 +08:00
如果仅仅是简单任务,最简单的就是 crontab 起个定时任务,到点了调用下 Python 脚本
如果是 Python Server 定时任务,方法很多
troilus
2021-04-27 12:44:20 +08:00
crontab, 特别好用
masterclock
2021-04-27 13:18:12 +08:00
简单任务 cron 、systemd
巨复杂的 airflow 类工作流引擎
自定义的 temporal 、cadence
xgq89757
2021-04-27 14:05:35 +08:00
@TimePPT 想具体某一天执行,执行后任务就销毁。
xgq89757
2021-04-27 14:07:42 +08:00
@troilus 这个会循环执行,主要是想做一次性任务。未来的某一天的某一个时间执行完就结束。
xgq89757
2021-04-27 14:09:55 +08:00
@masterclock 主要是想搞具体到日期的一次性任务,后面这些还都没听说过,我顺便学下。
bigpigeon
2021-04-27 14:11:12 +08:00
写个脚本
sleep xxx
do some thing
0ZXYDDu796nVCFxq
2021-04-27 14:13:17 +08:00
不要用 cron,用 at
SjwNo1
2021-04-27 14:13:21 +08:00
在脚本里限制执行条件不就可以了吗
xanawang
2021-04-27 14:15:36 +08:00
那就一个骚操作吧 脚本的最后调用系统命令把 crontab 那行删掉再把自己删掉
sujin190
2021-04-27 14:16:23 +08:00
xgq89757
2021-04-27 14:18:24 +08:00
@gstqc at 不错,学到了。
mysql 的事件可以做一次性任务,较复杂的业务可能要结合存储过程,貌似很多公司不建议用 事件和存储过程。
xgq89757
2021-04-27 14:21:09 +08:00
@xanawang 这个确实骚 恍恍惚惚
yqmac
2021-04-27 14:51:22 +08:00
crontab 里面指定执行的年月日时分秒以后还能重复执行?只能执行一次了
ryd994
2021-04-27 16:59:00 +08:00
@yqmac crontab 里没法指定年
分时日月星
WeKeey
2021-04-27 17:01:42 +08:00
RabbitMQ 延时队列
timethinker
2021-04-27 17:03:37 +08:00
按照你想到的这两种方法,我觉得第一种是可行的,定时扫描任务表,处理任务,然后删除或标记为已处理。
这样当你处理任务的时候,参与事务,如果任务处理失败,下一次定时扫描还可以重试(因为任务的删除操作或标记操作随着失败被一同回滚了,因此下一次执行仍然可以达成执行条件)。

取决于你目前现有的技术框架,如果增加一个这样的定时任务表很简单的话那就按照简单的来做。
mlcq
2021-04-27 17:10:09 +08:00
Scheduled 指定几月几日,然后代码里做个判断,满足条件才执行,一年最多就做一次判断吧,也没关系了
mlcq
2021-04-27 17:10:59 +08:00
@mlcq #18 看错了,不好意思,以为用的 java
zhoudaiyu
2021-04-27 19:58:47 +08:00
Celery 啦

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

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

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

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

© 2021 V2EX