V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
scriptB0y
V2EX  ›  分享创造

免费的定时任务托管 clock.sh

  •  1
     
  •   scriptB0y ·
    laixintao · 2019-09-06 15:22:45 +08:00 · 9114 次点击
    这是一个创建于 1915 天前的主题,其中的信息可能已经有所发展或是发生改变。

    自己有很多定时任务要跑,所以之前搞了一个定时运行的系统。

    在 V2EX 看到很多有类似需求的朋友:

    所以在这里贴一下,有脚本要跑的朋友可以用这个。

    地址: https://clock.sh/

    帮助文档: https://help.clock.sh/

    有问题在这里开 issue: https://github.com/clock-sh/ticket


    Features

    • 定时器、worker、队列都是冗余的,所以是高可用的;
    • 由专业的 SRE 运维(是的,正是在下);
    • 支持(成功时、失败时、或者总是)发送消息到 telegram slack 等主流 IM ;
    • 每一个任务都跑在 Docker 里面,所以你基本不用去烦恼 PATH 变量、配置问题,只要写一个你想跑的脚本就可以;
    • 由于是 Docker,所以支持任何语言(虽然现在我只搞了个 Python image );
    • 方便,Github 登陆就能用;
    • 免费,但是请大家按需使用,不要搞很多不需要的每分钟运行的任务...

    不太好的东西:

    • 你要把脚本保存在我这里,所以要信任我。但是不建议把一些敏感信息,比如常用账号密码写在脚本里面。最好对定时任务的脚本权限最小化。比如要发送邮件的话,专门建立一个新的邮箱;

    截图

    Screen Shot 2019-09-06 at 3.20.43 PM.png Screen Shot 2019-09-06 at 3.20.15 PM.png Screen Shot 2019-09-06 at 3.20.25 PM.png

    第 1 条附言  ·  2019-09-06 16:54:22 +08:00
    现在只有 Python:3 一个 image,所以其他语言暂时不能用,第三方库也暂时不能用。

    后面打算支持其他语言,以及支持任意 hub.docker.com 的 image
    52 条回复    2020-02-28 15:05:17 +08:00
    bytelee
        1
    bytelee  
       2019-09-06 15:38:17 +08:00   ❤️ 1
    赞一个
    xycool
        2
    xycool  
       2019-09-06 15:49:14 +08:00   ❤️ 1
    不错不错,不过 Safari 上面顶部样式错位了。
    mango88
        3
    mango88  
       2019-09-06 15:50:05 +08:00
    支持一下
    zagfai
        4
    zagfai  
       2019-09-06 15:56:32 +08:00   ❤️ 1
    写个 CPU 死循环怎么样
    isayme
        5
    isayme  
       2019-09-06 16:28:46 +08:00
    赞一个
    scofieldpeng
        6
    scofieldpeng  
       2019-09-06 16:32:58 +08:00
    @zagfai #4 docker 运行的话楼主能够限制你的 cpu 使用率,再不济,搞一个监控,发现你这人有问题直接封账号不就得了
    scriptB0y
        7
    scriptB0y  
    OP
       2019-09-06 16:33:12 +08:00
    @zagfai 我里面限制 pid 数量了 和最大运行时间了。
    scriptB0y
        8
    scriptB0y  
    OP
       2019-09-06 16:34:55 +08:00
    @scofieldpeng
    @zagfai

    以及 Docker 的 runc 我替换成了 runsc,( gVisor ),所以隔离性比 docker 也会好一些。
    bobsam
        9
    bobsam  
       2019-09-06 18:01:31 +08:00
    想问问:
    执行成功后,调用 bark 的推送接口,但是一直调用失败,请问是什么原因呢?
    scriptB0y
        10
    scriptB0y  
    OP
       2019-09-06 18:09:13 +08:00
    @bobsam bark 是啥?是 clock 这里的通知功能吗?
    lauix
        11
    lauix  
       2019-09-06 18:09:20 +08:00   ❤️ 1
    和我们的 https://github.com/yehux/Coot 一样的
    nolo
        12
    nolo  
       2019-09-06 18:13:33 +08:00
    首先给楼主点赞。但这个功能云厂商的函数计算也能做,而且做的更好
    如果之后支持 image 是个独一无二的功能点
    swulling
        13
    swulling  
       2019-09-06 18:15:33 +08:00 via iPhone
    image 是一个好的,这个可以做一个 saas 服务了

    赶快回去找老大立项抄一下
    joucks
        14
    joucks  
       2019-09-06 18:27:01 +08:00
    和我们的 https://github.com/yehux/Coot 一样的
    malusama
        15
    malusama  
       2019-09-06 18:41:25 +08:00
    话说支持 python 都有哪些库啊?
    requests 支持吗?

    而且保存任务后不能修改时间了。

    能不能在提交前可以试运行一下程序什么的?
    这样可以测试一下
    scriptB0y
        16
    scriptB0y  
    OP
       2019-09-06 19:02:15 +08:00
    @malusama

    话说支持 python 都有哪些库啊?
    requests 支持吗?

    镜像就是原生的 Python:3 什么库都没有的。

    而且保存任务后不能修改时间了。

    > 能不能在提交前可以试运行一下程序什么的?
    这样可以测试一下


    有这个计划来着。。。但是还没时间搞。搞个试运行的按钮。
    但是现在可以直接用 Docker run python:3 这个 image 在你本地测试。
    scriptB0y
        17
    scriptB0y  
    OP
       2019-09-06 19:02:53 +08:00
    @malusama 不用抄了,回头我把源码放到 github 上。
    lostberryzz
        18
    lostberryzz  
       2019-09-06 19:05:17 +08:00
    域名不错
    scriptB0y
        19
    scriptB0y  
    OP
       2019-09-06 19:06:09 +08:00
    @nolo 是的,我以前用 lambda 的,为什么要做这个呢? lambda 太繁琐了。。。

    lambda 需要注册账号,交信用卡,搞账单吧,计算方式还很复杂,我只要 github 登陆就可以了;

    lambda 定时任务怎么调度,需要引入一个调度服务吧,怎么处理日志,需要搞 cloudwatch 吧(账单更复杂了)。需要学习怎么玩吧,怎么搭环境。我这里只要填 4 个字段就可以了。

    lambda 怎么通知到 telegram,需要自己配置吧,我这里只要填写一个字段就可以了。

    lambda 可以用 dynamo 数据库啥的存储服务,我这里……好吧我做不到。。。任务怎么持久数据,我真没想好。

    所以我觉得这玩意还是有价值的。
    lk1ngaa7
        20
    lk1ngaa7  
       2019-09-06 19:20:16 +08:00
    很赞
    jasonqiao36
        21
    jasonqiao36  
       2019-09-06 22:43:42 +08:00
    期待开源
    scriptB0y
        22
    scriptB0y  
    OP
       2019-09-06 22:59:39 +08:00
    @jasonqiao36 嗯 主要我现在自己用有个 ansible 仓库部署的,这个不开源大家也不知道拿到源码怎么部署。

    这套玩意包括:
    - 多个定时器进程
    - 高可用的 broker
    - db
    - 多个 worker 进程
    - 多个 worker 事件消费(包括发送任务通知,更新 db 中 worker 的状态)
    - 以及 web 后台
    - 监控系统

    所以还是等等再开源代码吧。。。
    cmdOptionKana
        23
    cmdOptionKana  
       2019-09-06 23:50:59 +08:00
    域名优秀啊
    gimp
        24
    gimp  
       2019-09-07 00:14:53 +08:00
    挺好,我在公司也做了一个脚本运行时平台,你可以把 python 镜像封装一层,加些包,用途就更广了
    DearTanker
        25
    DearTanker  
       2019-09-07 00:27:34 +08:00
    支持做小工具的大佬。
    shiny
        26
    shiny  
       2019-09-07 00:29:07 +08:00
    今天还在折腾 GitHub Actions 里的定时器
    Riohun
        27
    Riohun  
       2019-09-07 08:25:35 +08:00 via Android
    很方便的小工具!
    ch3nOr
        28
    ch3nOr  
       2019-09-07 10:37:34 +08:00
    感觉不错,楼主有没有考虑过集成类似 Airflow 的功能
    scriptB0y
        29
    scriptB0y  
    OP
       2019-09-07 15:32:50 +08:00
    @gimp 是的 打算这样呢。

    @ch3nOr 我考虑集成 ifttt 呢,aitflow 会不会太复杂了,不想搞得很复杂用起来很麻烦。。。
    zhihaofans
        30
    zhihaofans  
       2019-09-07 16:00:19 +08:00 via Android
    @joucks @lauix 用不着开两个号说两遍吧…
    ericgui
        31
    ericgui  
       2019-09-08 01:11:09 +08:00
    什么时候上 nodejs
    python 不太会用
    Isaac313
        32
    Isaac313  
       2019-09-08 10:27:54 +08:00 via Android
    感觉不错,等 append 源码学习一下
    scriptB0y
        33
    scriptB0y  
    OP
       2019-09-08 14:30:28 +08:00
    @ericgui 下个周吧。最近有点忙。node 我本地试过的,还没部署上去。
    zhenlang
        34
    zhenlang  
       2019-09-08 17:07:22 +08:00
    感觉自己当时创想的 install.sh.cn
    却没达到曾经的要求。
    希望能向大佬学习
    scriptB0y
        35
    scriptB0y  
    OP
       2019-09-09 11:08:36 +08:00
    @zhenlang 你这个域名,看样子比较像:now.sh ?
    xidianlz
        36
    xidianlz  
       2019-09-10 20:06:13 +08:00
    提两点小意见:
    1,时区好像不太对,crontab 写的是 30 20 * * * ,也就是每天晚上八点半执行,可是在 my task 那个页面看这个任务的下次运行时间是 4:30,刚好差了 8 个小时。
    2,每个 task 可以有一个立即执行的选项,这样比较容易调试。
    最后,谢谢楼主提供这样的工具
    scriptB0y
        37
    scriptB0y  
    OP
       2019-09-11 21:10:26 +08:00
    @xidianlz 是的,时区的问题很难搞啊,因为 crontab 是不包含时区信息的,我想让每个用户填写的 crontab 都按照自己的时区填写,然后按照自己的时区执行。但是还没有空完成这个 feature。
    xidianlz
        38
    xidianlz  
       2019-09-12 10:19:02 +08:00
    @scriptB0y emmmm crontab 是不包含时区,但是机器是有时区的啊,crontab 默认使用的就是机器的时区,如果没错的话,你机器用的应该是格林威治时间。如果你不改动机器上的时区,前段提交的时候选一个时区就好了啊,比如东八区,之后再把东八区的时间转换到 crontab 的时间存起来就好了。
    scriptB0y
        39
    scriptB0y  
    OP
       2019-09-12 13:07:06 +08:00
    @xidianlz crontab 的时区转换是非常复杂的,比如原定 30 日 23 点执行,转换之后是次日 1 点,crontab 就完全不一样了。
    litao3rd
        40
    litao3rd  
       2019-09-12 17:24:37 +08:00
    为啥要转换 crontab 的时区?

    一直在想自己写一个在小组里部署使用,但是拖延症始终治不好,坐等答主开源
    abmin521
        41
    abmin521  
       2019-09-14 12:34:01 +08:00
    支持
    xiongshengyao
        42
    xiongshengyao  
       2019-09-14 19:04:48 +08:00
    Aether
        43
    Aether  
       2019-10-23 17:24:30 +08:00
    Aether
        44
    Aether  
       2019-10-23 17:26:02 +08:00
    @scriptB0y 现在环境选择是 Python: undefined
    所以这个坑已经弃了么……
    scriptB0y
        45
    scriptB0y  
    OP
       2019-10-24 00:01:21 +08:00
    @Aether 没,我知道这个问题。最近手贱部署了一下服务器,搞了一个不兼容的后端上去。最近老任务执行是没问题的,新任务添加不了。
    scriptB0y
        46
    scriptB0y  
    OP
       2019-10-24 00:58:28 +08:00
    @Aether 兄弟我为你熬夜修好了。。。够意思吧。
    Aether
        47
    Aether  
       2019-10-24 16:01:55 +08:00
    @scriptB0y 太厉害了,赞赞赞 👍
    Aether
        48
    Aether  
       2019-10-24 16:18:57 +08:00
    @scriptB0y 然而 New tasks 里 Running Enviroment 里还是 Python undefined ……
    Aether
        49
    Aether  
       2019-10-24 16:20:20 +08:00
    scriptB0y
        50
    scriptB0y  
    OP
       2019-10-24 19:32:06 +08:00
    @Aether 你看到的应该是缓存,刷新一下应该就好了,我测过的。
    Aether
        51
    Aether  
       2019-11-05 20:51:04 +08:00   ❤️ 1
    @scriptB0y
    现在看好了。

    强烈支持 @@malusama 的两个建议:
    1、“启动时立即执行一次”或者类似的调试服务?现在要调试的话似乎不太方便(虽然在本地都调试好了)
    2、基础类库例如至少包括 requests ……其他的可以让用户来慢慢提……
    Harlaus
        52
    Harlaus  
       2020-02-28 15:05:17 +08:00
    期待开源
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1166 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 18:49 · PVG 02:49 · LAX 10:49 · JFK 13:49
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.