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

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

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

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

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

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

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


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

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

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