V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
hhhWhy
V2EX  ›  程序员

求助,多个定时任务更优解

  •  
  •   hhhWhy · 2021-07-29 11:20:30 +08:00 · 2209 次点击
    这是一个创建于 1217 天前的主题,其中的信息可能已经有所发展或是发生改变。

    场景:

    1. 有多个定时 /周期的任务需要执行(比如:周一三五执行,每天 8 点执行)。
    2. 用户 A 定的任务,权限更高的用户 B 可以修改,当然修改以后原任务执行周期自然就变了。
    3. CS 软件,任务数据都在数据库,执行必须由客户端执行。

    现有设计:

    1. 将计时器和数据打包,任务更改后去重新创建计时器
    2. 将计时器单独拎出来,到点主动拉数据库数据。任务更改后,计时器只增不删。

    感觉实现都不是很优雅,大家有没有遇到过这种问题,有没有更优雅的模型

    第 1 条附言  ·  2021-07-29 17:20:34 +08:00
    场景补充:

    客户机不会多于 5 台,一般就两个用户,定时把数据推给用户,用户 A 和 B 只需要一个人看。
    不同时间对应不同数据,都是从数据库去取,实际开销也比较小。
    8 条回复    2021-07-29 17:12:29 +08:00
    meshell
        1
    meshell  
       2021-07-29 11:33:09 +08:00
    为什么必须客户端执行?服务端跑定时,推送消息给客端该跑任务了?
    zardly666
        2
    zardly666  
       2021-07-29 11:36:21 +08:00
    xxl-job 看看呢 服务端有立即执行的 api 供外部(客户端)调用。
    chionetw5
        3
    chionetw5  
       2021-07-29 12:20:26 +08:00
    celery 有动态修改的接口
    xlui
        4
    xlui  
       2021-07-29 12:26:05 +08:00 via iPhone
    服务端保存定时任务和执行计划,到执行时间后发执行指令给客户端
    hhhWhy
        5
    hhhWhy  
    OP
       2021-07-29 13:33:52 +08:00
    @meshell @xlui 因为依托于 CS 平台,原来老的 S 端只有一个数据库和多个客户端的数据交互。如果要去加功能的话,祖传代码,所以为了少生产 BUG 还是想放到客户端上面去做
    hhhWhy
        6
    hhhWhy  
    OP
       2021-07-29 13:39:20 +08:00
    @zardly666 @chionetw5
    看了下,如果服务端可以改的话,是很不错的。但是限定在客户端执行 ort
    petercui
        7
    petercui  
       2021-07-29 16:03:40 +08:00
    @hhhWhy 客户端要是不开机怎么执行呢?
    hhhWhy
        8
    hhhWhy  
    OP
       2021-07-29 17:12:29 +08:00
    @petercui 不开机就不执行,直接顺延到下个周期
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5404 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 09:17 · PVG 17:17 · LAX 01:17 · JFK 04:17
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.