[Task 君] 一个可以高度自定义的定时任务托管平台 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
SilencerL
V2EX    分享创造

[Task 君] 一个可以高度自定义的定时任务托管平台

  •  2
     
  •   SilencerL 2020-04-11 08:03:29 +08:00 10188 次点击
    这是一个创建于 2012 天前的主题,其中的信息可能已经有所发展或是发生改变。

    0x0

    当然是先上地址:Task 君 | Mr.Task


    初衷

    Task 君这个项目是引申自我曾经写过的一个 “实时监控指定微博用户的发文,对发文内容进行情绪判断、关键字抽取等,做到实时同步关心的人的心情的功能” 这样一个舔狗项目。但是经过一番修改之后,我发现好像不管怎么修改都不能太好的满足公开作为服务的目的。所以我把项目思路整理了一下之后决定做一个新的项目可以高度自定义的任务托管平台。

    这个项目的目的是用户可以自己写一些代码,然后托管在平台上定时执行或者通过 URL 地址进行调用,只要用户会一点代码,不光是监测用户微博的功能,还能实现很多有意思的功能,比如当作一个简单的 Jenkins 来用、定时下载 Bing 的每日壁纸、作为自己服务的可用性检测等等。


    介绍

    Task 君为每一位用户提供了一个 Linux 环境,可以在允许的权限下完整的使用 Linux 的生态。目前已经内置的运行环境包括:

    • Console.WriteLine("dotNet Core 3.X");

    • console.info("NodeJS");

    • print("Python 2.x/3.x")

    • echo 'PHP';

    用户甚至可以自己上传一套需要的运行环境使用。

    Task 君的最小业务粒度为 脚本,用户可以编写不同的脚本来实现自己想要的功能。从简单的直接可运行的程序到需要安装一系列依赖或者其他依赖 Linux 环境的复杂任务,都可以根据自己的需求来编写脚本。


    资源限制

    为了保证用户资源的公平性和服务的可用性,Task 君目前有如下限制:

    • 用户可用磁盘空间为软性限制 125MB,硬性限制 150MB 。

      • 用户所建立的脚本、任务、定时器、日志等文件所使用的空间均包含在用户可用磁盘空间中。
    • 任务进程执行时间限制最长不超过 15min 。

    • 任务进程占用 CPU 和内存资源暂无限制。


    更多说明

    关于 Task 君的更多说明,请参阅 帮助文档

    若在使用中遇到无法解决的问题,请到 我的微博 联系我,或者到 MrTask Issues 提交 Issues 进行反馈。


    写在最后

    因为项目完全是我在工作闲暇之余开发,难免有一些 Bug 或者疏漏的地方,希望大家多多提出意见和建议!


    更多有趣的项目


    预览图

    UTOOLS1586563272710.png

    UTOOLS1586563276390.png

    UTOOLS1586563279213.png

    UTOOLS1586563281786.png

    UTOOLS1586563284367.png

    UTOOLS1586563286612.png

    UTOOLS1586563289198.png

    第 1 条附言    2020-04-19 23:44:32 +08:00

    关于 任务 “执行失败” 的原因

    有时候任务执行后在日志中会提示执行失败,但是事实上可能只是标准输出流中存在警告信息,比如 pip 或其他依赖的版本过低,所以当看到 “执行失败” 的任务的时候,请手动点击查看日志判断下是否真的是阻塞整个任务的异常。

    下一个版本我会优化这个提示。


    当然,根据反馈来看,存在真正的异常导致执行失败的原因大部分都是没有安装依赖。如果你的脚本需要依赖,请使用自定义脚本,先安装依赖再执行脚本。

    Example

    Python

    test.py 是使用 Pyhton 3.x 的脚本,并且使用到了 requests 模块,则自定义脚本为:

    pip3 install requests --user python $HOME/test.py 

    请记住,在使用 pip/pip3 的时候一定要带上 --user 参数

    NodeJS

    Node-Script 是存放 NodeJS 项目的目录,并且存在正确的 package.json,则自定义脚本为

    cd $HOME/Node-Script yarn node test.js 
    44 条回复    2020-09-20 15:03:28 +08:00
    SilencerL
        1
    SilencerL  
    OP
       2020-04-11 08:51:57 +08:00
    # 补充
    因为需要将代码保存到服务器上,所以重要文件请务必设置为权限 700 (默认)不要修改。
    ai0by
        2
    ai0by  
       2020-04-11 09:09:09 +08:00
    从图上看是单节点的啊,目前使用 gocron,期待多节点
    lhx2008
        3
    lhx2008  
       2020-04-11 09:09:55 +08:00 via Android
    感觉和云 serverless 有点像
    SilencerL
        4
    SilencerL  
    OP
       2020-04-11 09:13:17 +08:00
    @ai0by
    Yep,目前还是单节点,下一步的目标就是多节点可选择 /迁移。

    @lhx2008
    是的,事实上大厂的 ServerLess 如果用的顺溜了绝对比 Task 君好(哈哈哈),Task 君主要就是方便+扩展性更强。
    labulaka521
        5
    labulaka521  
       2020-04-11 11:00:05 +08:00 via Android
    在做同样的事 握爪
    cy97cool
        6
    cy97cool  
       2020-04-11 12:57:34 +08:00
    前端不错噢 话说后端直接对接大厂的函数计算如何 改造难度大嘛?
    SilencerL
        7
    SilencerL  
    OP
       2020-04-11 22:39:07 +08:00
    @cy97cool
    后端对接函数计算可能就是全部重写了哈哈哈
    wysnylc
        8
    wysnylc  
       2020-04-13 14:54:51 +08:00   1
    写个定时领取奖励的平台,写一些公共一键模版,未来大有可期
    vtwoextb
        9
    vtwoextb  
       2020-04-13 16:09:10 +08:00
    这个页面前端框架的 主题 很好 ,在线求
    vtwoextb
        10
    vtwoextb  
       2020-04-13 16:09:47 +08:00
    后台的
    FakerLeung
        11
    FakerLeung  
       2020-04-13 17:39:36 +08:00
    @vtwoextb 盲猜 antd 。
    wangjhsir
        12
    wangjhsir  
       2020-04-13 20:41:57 +08:00
    不错,可以再加一个指定时间戳的 异步回调
    比如 举个例子 A 业务添加 item 后 希望 N 分钟后通知 B 业务做处理。这个可以是请求 B 的 api 接口。这样代码就可以保留在每个用户自己的服务器上。更加灵活
    SilencerL
        13
    SilencerL  
    OP
       2020-04-13 23:09:53 +08:00
    @vtwoextb
    @FakerLeung
    盲猜对了哈哈哈, 是阿里全家桶 antd pro + umi.
    SilencerL
        14
    SilencerL  
    OP
       2020-04-13 23:10:48 +08:00
    @wangjhsir
    这个需求感觉可以通过自定义脚本来实现呀~
    PixelCode
        15
    PixelCode  
       2020-04-13 23:51:49 +08:00
    有没有精确定时开源项目推荐(万级别的)
    mauve
        16
    mauve  
    PRO
       2020-04-14 09:54:07 +08:00
    建议楼主下次发帖加上 .NET Core 字眼
    SilencerL
        17
    SilencerL  
    OP
       2020-04-14 11:34:39 +08:00
    @mauve
    为啥要特意强调 .NET Core 哈哈哈
    mclxly
        18
    mclxly  
       2020-04-14 11:42:28 +08:00
    LZ 厉害!

    顺便晒个域名:taskatm.com

    当初计划做类似的项目~
    mauve
        19
    mauve  
    PRO
       2020-04-14 12:52:52 +08:00
    @SilencerL .NET Core/C# 程序员惺惺相惜
    tikazyq
        20
    tikazyq  
       2020-04-14 13:28:08 +08:00
    支持一个,楼主可以参考下我们的项目,跟你的有异曲同工之秒,不过我们是专注爬虫的

    https://github.com/crawlab-team/crawlab
    tikazyq
        21
    tikazyq  
       2020-04-14 13:49:45 +08:00   1
    体验了一下,简单评论一下。

    命名比较不友好。“脚本”、“文件”的概念容易混淆,建议脚本改为其他名字,例如“任务”之类的。进程乍一看真不知道咋回事,运行了之后才发现,其实是实际正在运行的“进程”,而且运行完就消失了。

    而且感觉 entity 没必要抽象这么多,其实“脚本”耦合到进程里就可以了,“文件”没问题,可以跟着“脚本”走。“任务”的概念真的多此一举,感觉需要学习很多概念,增大了学习成本。

    不过这个平台真的不错,只是要考虑可扩展性问题,使用的人一多,必然导致维护成本的增加,包括服务器资源。不如做“私服”版,把代码开源出来,让大家部署。
    wo8023xue
        22
    wo8023xue  
       2020-04-14 14:33:53 +08:00
    @mauve .NET Core/C# 程序员惺惺相惜
    SilencerL
        23
    SilencerL  
    OP
       2020-04-14 15:08:29 +08:00
    @mauve
    @wo8023xue

    干了五年 .NET ,曾经想坚持信仰一直干下去
    结果还是面向市场低了头转行前端了 233,不过还好有个 TypeScript 能爽一爽
    SilencerL
        24
    SilencerL  
    OP
       2020-04-14 15:12:52 +08:00 via iPhone
    @tikazyq
    感谢反馈~等汇总一下大家的意见我考虑修改一下业务的流程提高一下易用性。
    niuoh
        25
    niuoh  
       2020-04-14 16:23:05 +08:00
    建议在增加一种任务类型 常驻后台执行的任务
    niuoh
        26
    niuoh  
       2020-04-14 16:26:35 +08:00
    如果有个在线的 console 可以 手动安装管理环境 就更好了 然后再完善下文件管理的在线 ide 可以直接在线编辑服务器上的文件
    Mistwave
        27
    Mistwave  
       2020-04-14 20:43:54 +08:00 via iPhone
    收藏一下 明天研究看看
    SilencerL
        28
    SilencerL  
    OP
       2020-04-15 11:02:05 +08:00
    @niuoh
    关于"常驻后台执行"的任务, 这个应该不会添加了, 因为这个项目的目的就是托管一些"需要在某些条件下触发, 运行完即退出" 的任务.
    关于在线 console 的话下个版本会考虑添加哦~ 现在可以使用自定义类型的脚本, 比如:

    ----nodejs----
    cd $HOME/example
    yarn
    node start.js
    ----------------
    huayumo
        29
    huayumo  
       2020-04-16 17:44:12 +08:00
    简单的阿里云上好像有免费的监控,比如买东西有货了,就给你发短信
    Aether
        30
    Aether  
       2020-04-16 20:02:41 +08:00
    之前看到过 https://clock.sh/
    ddup
        31
    ddup  
       2020-04-16 21:52:01 +08:00
    支持 .NET Core ? 好评
    SilencerL
        32
    SilencerL  
    OP
       2020-04-16 23:29:57 +08:00
    @ddup
    .NET Core/C# 程序员惺惺相惜 +1
    wework
        33
    wework  
       2020-04-17 09:29:14 +08:00
    哈哈,貌似你很喜欢 .tools 后缀啊,不错
    ddup
        34
    ddup  
       2020-04-17 09:38:37 +08:00
    @mauve #18
    @wo8023xue #21
    哈哈哈
    .NET Core/C# 程序员惺惺相惜++
    SenLief
        35
    SenLief  
       2020-04-17 10:21:43 +08:00
    可惜不能做轮询,哈哈。
    CoCoMcRee
        36
    CoCoMcRee  
       2020-04-17 14:59:34 +08:00
    在用 gocron 的+1
    oxogenesis
        37
    oxogenesis  
       2020-04-18 21:12:34 +08:00
    @tikazyq 同意#21,好东西可以开源,让大家部署私服
    Arrowing
        38
    Arrowing  
       2020-04-19 11:42:00 +08:00
    哈哈,这个和我的一个想法很类似,不过你界面做得很棒!
    SilencerL
        39
    SilencerL  
    OP
       2020-04-19 23:46:17 +08:00
    @oxogenesis
    等我把代码整理一下写得漂亮点再考虑开源现在开源真是献丑了。。


    @Arrowing
    感谢你的称赞~
    Terang
        40
    Terang  
       2020-04-25 23:53:34 +08:00
    感觉可以接入 ifttt?(我的好多定时任务都扔那上面的 hh ) action 挺多的
    hq
        41
    hq  
       2020-04-26 00:24:17 +08:00
    同学你已经通过我云函数计算方向的一轮技术面试,方便的时候约下后面的面试。
    SilencerL
        42
    SilencerL  
    OP
       2020-04-26 00:35:32 +08:00
    @Terang
    一切皆有可能(斜眼 只要能写出脚本

    @hq
    哦天呐, 真的吗, 但是能帮我内推蚂蚁 mPaaS 吗, 我暗恋对象在里面哈哈哈哈哈(狗头
    hq
        43
    hq  
       2020-04-28 00:40:39 +08:00
    @SilencerL 我的邮箱 aG9uZ3FpLndhbmdAYWxpYmFiYS1pbmMuY29t,还是建议先考虑我们,构建一些好玩有用的应用是就是工作的一部分。
    huai
        44
    huai  
       2020-09-20 15:03:28 +08:00
    请问有多少请求限制呢? 比如 Github Action 每个小时 最多 1k 次请求
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2789 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 27ms UTC 14:51 PVG 22:51 LAX 07:51 JFK 10:51
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86