• 请不要在回答技术问题时复制粘贴 AI 生成的内容
mrchi
V2EX  ›  程序员

Python 执行定时任务(cron)有什么好用的框架吗

  •  1
     
  •   mrchi ·
    mrchi · Dec 27, 2018 · 8038 views
    This topic created in 2704 days ago, the information mentioned may be changed or developed.

    目前想写一些定时任务挂在服务器上,主要大概有两类:

    • 定时请求某些内容是否更新了,发送通知给我,比如” B 站罗小黑更新提醒“;
    • 定时实现一些动作,比如签到、领金币等等。

    看了一些框架:

    • rq-scheduler:基于 redis,核心开发者就 2 个人,open 的 issue 比较多,简单易上手,但功能不够全面,与 supervisor 集成的时候,error 日志和正常日志的输出是刚好调换的,尴尬;
    • apscheduler: 功能比较全面,支持各种数据库,拥有各种调度器,但是项目看起来不如 rq 活跃;
    • airflow: 文档有点难懂,apache 基金会的孵化项目,应该不会弃坑,胜在项目的发展;
    • Celery:可能是用的最广的框架了吧,但是去年他们有个时区 bug,拖了一年才发新版本修复,都不出 hotfix 的= =

    各位 v 友有什么建议吗?你们在项目中都是怎么做定时任务的?

    32 replies    2022-01-11 22:33:32 +08:00
    jadec0der
        1
    jadec0der  
       Dec 27, 2018
    crontab
    mrchi
        2
    mrchi  
    OP
       Dec 27, 2018
    @jadec0der 我想写一套东西,以后添加新定时任务的时候直接扔代码和运行配置就好了,再就是能够出错重试,然后对结果啥的能进行查看,crontab 的结果就只能往日志里写了吧
    Kylin30
        3
    Kylin30  
       Dec 27, 2018
    while true
    xiexingjia
        4
    xiexingjia  
       Dec 27, 2018   ❤️ 1
    huey
    Oneneuuu
        5
    Oneneuuu  
       Dec 27, 2018 via Android
    就 celery 吧?
    Rebely
        6
    Rebely  
       Dec 27, 2018 via Android
    我觉得如果需求不是特别麻烦另类选一个简单的就好了😁
    user919lx
        7
    user919lx  
       Dec 27, 2018   ❤️ 1
    我是做数据开发的,需要处理大量的定时任务,还有重重复杂的依赖关系。
    很推荐用 Airflow,已经有非常多的公司在使用这个调度系统了,就调度这件事而言,我觉得它提供的功能已经非常全面了,足够满足你的需求。
    如果觉得官方文档比较难懂,可以参考我写的几篇博客,http://longfei.leanote.com/cate/bigdata 不过我这几篇都是概念和使用方法。如果你要想了解如何安装部署,要么看官方文档,要么就搜一下网络上的教程。
    user919lx
        8
    user919lx  
       Dec 27, 2018
    按照你的需求, 部署 Airflow 配置个 LocalExecutor 就足够满足了。

    1. 写一套东西,以后添加新定时任务的时候直接扔代码和运行配置
    Airflow 的任务是用 Python 写的,你完全可以写成动态的形式,可以通过读取数据库或者 csv 文件来动态生成定时任务,事实上我在实践中经常这么用。

    2. 能够出错重试,然后对结果啥的能进行查看
    Airflow 提供 Web UI 界面,可以查看每个周期下的 task 的运行状态,还有完整的信息(执行时间、重试次数、运行日志等等),出错自动重试,可以发送邮件,并且有按钮能让你重试任务,连 ssh 登陆服务器都不需要。
    smallgoogle
        9
    smallgoogle  
       Dec 27, 2018
    你这个直接就循环延时就行了。不需要用到啥定时器这些。
    另外的定时任务。我写了一个。不知道合不合适你。我也是搞了好久。
    fonlan
        10
    fonlan  
       Dec 27, 2018 via Android
    直接装个 jenkins 不就行了,So easy
    zmj1316
        11
    zmj1316  
       Dec 27, 2018 via Android
    Jenkins +1 log 也够用 配置也方便
    aniua
        12
    aniua  
       Dec 27, 2018
    一个简单的方法:写个 Infinite loop,检查 Localtime,匹配上就执行动作。
    claymore94
        13
    claymore94  
       Dec 27, 2018
    threading.Timer, 做一个递归调用函数
    sunnyadamm
        14
    sunnyadamm  
       Dec 27, 2018 via Android
    Python 内循环,服务器 nohup
    ooeyunarika
        15
    ooeyunarika  
       Dec 27, 2018
    lz 举例的这些框架是分布式定时任务的,如果只是执行 lz 这些需求,没啥必要

    内循环,python3 可以上 asyncio,或者直接用 crontab 就好了
    rookiebulls
        16
    rookiebulls  
       Dec 27, 2018 via iPhone
    推荐 apscheduler,简单好用
    Alfons
        17
    Alfons  
       Dec 27, 2018
    sujin190
        18
    sujin190  
       Dec 27, 2018
    https://github.com/snower/forsun

    推荐下之前写的工具,系统定时器秒级定时,长时间运行无误差,支持 thrift 接口和 http 接口添加定时任务,redis 持久化任务,轻松管理千万级别定时任务处理,支持到期执行 shell、http、mysql、redis 等操作,也可以自己编写扩展添加执行器
    matrix1010
        19
    matrix1010  
       Dec 27, 2018 via Android
    其实 AWS lambda 和阿里云的函数都支持 cron, 每个月有免费额度,还有统计,报警等各种功能
    meiyoumingzi6
        20
    meiyoumingzi6  
       Dec 27, 2018 via Android
    罗小黑更新事件,几个月去轮询一次就好了🙃


    可以试试这个
    https://apscheduler.readthedocs.io/en/latest/
    virusdefender
        21
    virusdefender  
       Dec 27, 2018
    apscheduler 开发不活跃,但是绝对够用了,生产环境用了一段时间了
    meiyoumingzi6
        22
    meiyoumingzi6  
       Dec 27, 2018 via Android
    突然发现已经提到了🙃
    babykiss4ever
        23
    babykiss4ever  
       Dec 27, 2018
    用这个 https://github.com/dbader/schedule

    API 简洁,仿照自 Ruby 的 clockwork
    SmiteChow
        24
    SmiteChow  
       Dec 27, 2018
    异步 /计划任务系统? Python ?只能是 Celery
    chengxiao
        25
    chengxiao  
       Dec 27, 2018
    https://www.v2ex.com/t/509485#reply24
    之前看到有人实现的分布式 cron 管理 就收藏了
    richzhu
        26
    richzhu  
       Dec 27, 2018
    就 Celery 好了,想太多不累的嘛~
    sunwei0325
        27
    sunwei0325  
       Dec 27, 2018
    awesome python 进去搜一下有好多
    ibegyourpardon
        28
    ibegyourpardon  
       Dec 27, 2018
    介绍一个成品。。。

    https://gitee.com/georgehao/PPGo_Job
    hunter2015
        29
    hunter2015  
       Dec 27, 2018
    celery
    HackerPainter
        30
    HackerPainter  
       Dec 27, 2018
    lugit
    HackerPainter
        31
    HackerPainter  
       Dec 27, 2018
    512357301
        32
    512357301  
       Jan 11, 2022 via Android
    试试青龙面板,可以部署到本地的
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   1077 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 86ms · UTC 23:11 · PVG 07:11 · LAX 16:11 · JFK 19:11
    ♥ Do have faith in what you're doing.