1
quietin 2016-01-08 15:26:41 +08:00 2
apscheduler ,第 4 点自己实现就行了,其它都可以实现
|
3
tywtyw2002 OP @quietin 能不能简单说说第四点怎么实现呢?
|
4
baocaixiong 2016-01-08 15:30:58 +08:00
celery.schedule
|
5
knightdf 2016-01-08 15:31:48 +08:00
supervisor ,想控制直接自己再程序里控制
|
6
quietin 2016-01-08 15:47:21 +08:00
@tywtyw2002 直接 try except 可以吧?函数递归,或者用另外一个函数来调用也可以。
比如 task 用 work 函数执行, 在函数 run 中跑 work -> A exception -> except -> X + work 把 task 加入到 apscheduler 的调度中即可 |
7
quietin 2016-01-08 15:47:55 +08:00
@tywtyw2002 手误,是把 run 函数加入到 apscheduler 的调度中
|
8
ethego 2016-01-08 15:51:37 +08:00
|
9
quietin 2016-01-08 15:51:44 +08:00
|
10
tywtyw2002 OP @quietin 之前我是这么想的,但是后来发现一个问题就是 X 有 30%的时候非一次成功,有时候需要等待 30+分钟并且进行多次才可以。
所以把他加入 run 里面并不是一个很好的解决办法。 比较好的解决办法就是把 X 当做一个新的 task 去调度,并且暂停原来的 task ,知道 X 执行成功。 apscheduler 简单看了一下,没找到关于动态调度的信息。 |
11
quietin 2016-01-08 16:00:48 +08:00
@tywtyw2002 同步阻塞, X 成功前 run 就卡在那儿了,不满足么
|
12
Rand01ph 2016-01-08 16:18:19 +08:00
celery 应该可以满足
|
13
est 2016-01-08 16:20:04 +08:00
redis queue
|
14
tuteng 2016-01-08 17:01:37 +08:00
celery
|
15
robinlovemaggie 2016-01-08 17:06:29 +08:00
看楼主的意思是觉得 celery+redis 太复杂是吗?试试 huey+redis ,轻巧许多——
https://huey.readthedocs.org/en/latest |
16
loading 2016-01-08 17:08:01 +08:00 via Android
这个有时间研究一下,目前我还是操作系统完成的。
|
17
langyu 2016-01-08 18:31:38 +08:00
celery beat
|
18
junzki 2016-01-08 23:44:07 +08:00
同 APScheduler ,基本能达到要求。至于 Daemonize ,可选方案比较多。 Python Cookbook 中给出了在 *nix 系统中 Daemonize 的实现方案,抄下来就可以用; 也可以使用 Linux 自带的 daemonize 来实现,不过可能需要自己写一点 shell 。
|
19
tywtyw2002 OP @quietin 但是这样阻塞了其他 task ,不同 task 是独立的。
|
20
tywtyw2002 OP @robinlovemaggie 不想配置 redis 呗。 觉得这简单的 job 一个 py 文件解决了。而且 task 数量就几个,主要是循环运行。
|
21
mqingyn616 2016-01-09 10:03:53 +08:00
|
22
nomaka 2016-01-09 19:22:36 +08:00
|