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

Rust 是否有稍微成熟一点的定时任务的包

  •  
  •   RTSmile · 101 天前 · 1208 次点击
    这是一个创建于 101 天前的主题,其中的信息可能已经有所发展或是发生改变。

    如题,现在做个功能想要实现即使服务端重启也能在重启完成后自动执行重启过程中漏掉的定时任务。

    单纯的定时任务感觉好办,但是服务器端任务重启后自动执行漏掉的任务感觉不太好搞,Cargo 上面看了半天好像没啥成熟的定时任务包。

    13 条回复    2022-11-02 09:32:54 +08:00
    runtousa
        1
    runtousa  
       101 天前 via iPhone
    楼主的需求其他语言的包能做到吗?
    maotao456
        2
    maotao456  
       100 天前
    楼主有点把包的职责范围想得太宽了。
    billzhuang
        3
    billzhuang  
       100 天前
    意味着这个包要有持久层,整个逻辑想想还挺复杂的。
    RTSmile
        4
    RTSmile  
    OP
       100 天前
    @runtousa 可以,C#使用 Hangfire 不需要配置直接就能这么用。
    RTSmile
        5
    RTSmile  
    OP
       100 天前
    @maotao456 然而 C#用 Hangfire 包不用配置就能直接这么用,想找这种功能的包肯定是看到有其他包实现了才找。
    RTSmile
        6
    RTSmile  
    OP
       100 天前
    @billzhuang 持久层感觉也不是太麻烦,目前的想法是用 Redis 做持久层,但是这样怎么判断哪些任务在重启期间没有被执行就比较麻烦了。
    billzhuang
        7
    billzhuang  
       100 天前
    c# hangfire 有这么强大么?我记得之前有个 bug ,已经启动的 task 无法 cancel 。
    RTSmile
        8
    RTSmile  
    OP
       100 天前
    @billzhuang Hangfire 确实可以的,毕竟是有 Pro 版本收费的包。不过你说的这个 bug 我还没遇到过,回头我去试试看。
    0Vincent0Zhang0
        9
    0Vincent0Zhang0  
       96 天前
    @RTSmile 关于“怎么判断哪些任务在重启期间没有被执行”,这个肯定要记录任务的执行日志,重启后根据执行日志进行判断。
    Nugine0
        10
    Nugine0  
       95 天前 via Android
    实在没有的话,可以把别的语言的包移植过来用
    sxfscool
        11
    sxfscool  
       95 天前
    需求也不复杂,在现有包上加个持久层就可以了吧
    RTSmile
        12
    RTSmile  
    OP
       94 天前
    @sxfscool 判断重启期间有哪些任务没执行有点小麻烦
    lanlanye
        13
    lanlanye  
       87 天前
    你需要额外一台不会重启的服务器定时记录需要执行的任务,是写日志还是推消息队列或者别的什么都可以,不然就启动时靠读取执行日志来计算之前有没有哪次漏掉了,反正定时任务肯定有个时间间隔吧……
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   广告投放   ·   实用小工具   ·   2262 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 36ms · UTC 05:50 · PVG 13:50 · LAX 21:50 · JFK 00:50
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.