1
binux 2019-08-02 02:21:55 +08:00
写两个任务调度
|
2
lalalakakaka 2019-08-02 03:26:13 +08:00
直觉直接 sleep 就行,单循环,单做一个 check 时间合法性的函数,这个函数负责检查是否时间超期。
check()==True 就继续运行,不然就 continue。任务函数直接阻塞式运行。 你考虑下自己需求,如果没有什么效率啊多任务啊的破事,这么做最稳健,还不容易出错。 |
3
leishi1313 2019-08-02 04:16:35 +08:00 via Android
我自己没用过不知道是不是满足你需求,但是你可以去看看 celery beat
|
4
kyuuseiryuu 2019-08-02 07:57:42 +08:00 via iPhone
逆向思维,先定义每五分钟执行一次的脚本,然后脚本里面判断满不满足运行时间要求再去执行具体内容或直接退出。
|
5
asdf123101 2019-08-02 07:58:40 +08:00 via Android
Jenkins job 可以写的吧
|
6
zchlwj 2019-08-02 08:18:04 +08:00 via Android
corn
|
7
zhchyu999 2019-08-02 08:20:11 +08:00 via Android
工作日这个概念有点坑
|
8
liuguichao 2019-08-02 08:26:40 +08:00
|
9
luozic 2019-08-02 08:30:05 +08:00 via iPhone
明白啥叫“工作日”否? 这儿问题的复杂点不是后面两个,而是啥时间就算工作日。
|
10
hmxxmh 2019-08-02 08:35:31 +08:00 via Android
你可以看下 aps,python 的异步定时调度框架,应该可以满足你需求
|
11
heZM 2019-08-02 08:52:11 +08:00
quartz ?
|
12
supervipcard 2019-08-02 08:59:34 +08:00 2
scheduler.add_job(jobA, 'cron', day_of_week='mon-fri', hour='9-11,13-20', minute='*/5', id='job_a')
|
13
exip 2019-08-02 09:10:41 +08:00
如何定义“工作日”?是 996 还是 965 还是 007 ?
不如把“工作日”改成“每天”,这样就只需关注怎么实现任务调度,而这个是很简单的。 |
14
xpresslink 2019-08-02 09:28:57 +08:00
你这个需求直接用 LINUX 系统的 cronjob 就可以了,网上教程很多。你自己写的时间调度脚本稳定性可靠性都差得多,而且至少还要再写一个守护进程保持调度进程不挂掉。
windows 操作系统可以用 ScheduleTask (管理工具中的任务计划程序)或在命令行使用 at 命令定时任务。 |
15
yellowtail OP @zhchyu999 就是周一到周五。。。
|
16
yellowtail OP @supervipcard 谢谢
|
17
lance86 2019-08-02 16:48:23 +08:00 1
就像 14 楼说的,系统自带的 crontab 就行并且最稳,你这个需求写两行就行,分别是上午和下午的。
另外如果你还要判定什么节假日,可以再写一个 python 程序来调用你本来要运行的任务,在这个 python 程序里判断是不是节假日,如果是的话就不执行任务,这样子还可以保持 crontab 不变。 |
18
SenLief 2019-08-02 19:18:56 +08:00 1
如果是 Linux 平台的可以用 crontab,当然了最好是用系统新的定时任务工具,systemd.timer
|
19
yellowtail OP @supervipcard 这是 apscheduler 吧 如果想从九点半开始呢。。
|
20
yellowtail OP scheduler.add_job(jobA, 'cron', day_of_week='mon-fri', hour='9-11,13-20', minute='*/5', id='job_a')这样的写法看着只能用在整数时间范围 如果我想九点半开始或者一个准确到秒的时间的话 大佬们看看应该怎么改呢。。。
|