分享一个工作上无语的事情 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
loveshuyuan
V2EX    职场话题

分享一个工作上无语的事情

  •  
  •   loveshuyuan 12 天前 3102 次点击

    因为项目里面遇到需要异步任务队列的需求,之前是用本地 process 实现的现在需要支持水平扩展,调研了一番,又考虑到 asyncio 的支持,于是选中了 https://taskiq-python.github.io 这个框架。

    咔咔咔一顿重构之后,公司里面的 devops ,是一个老外,非不让用 taskiq ,说什么技术栈不稳定,非要让用 k8s job 来实现,还为此写了一篇技术文档。。。

    我无语了,也听其他同事说他经常对技术栈,需求啥的提出一些意见,搞得人很不爽。之前还有一件事情,一个 Dockerfile ,通过不同 cmd 来分别启动 backend 和 worker ,他非得让拆成两个 Dockerfile...

    我是远程在一个国外公司,听组内其他同事说这个老外很犟,很古板,只听老板的话,其他人谁的也不听。

    21 条回复    2026-03-13 10:54:02 +08:00
    JoeJoeJoe
        1
    JoeJoeJoe  
    PRO
       12 天前
    有人替你背锅, 还有技术文档这种书面材料, 是好事啊.

    如果能给做一个具体的实施方案就更好了, 老外真是一个 good buddy
    midsolo
        2
    midsolo  
       12 天前
    这老外还真不错,我们领导就是口头上一句话,搞好了是他决策能力强、资源协调的好,搞砸了是我们的问题,让我们背大锅
    loveshuyuan
        3
    loveshuyuan  
    OP
       12 天前
    @JoeJoeJoe 还真有具体的实施方案,他还搞了两种 mode ,本地用 thread ,k8s 用 k8s job 。。。
    kapr1k0rn
        4
    kapr1k0rn  
       12 天前
    这是好事,他做的是 devops,考虑的东西比单纯技术实现多些。这个框架发布才到 0.12,是可能不稳定。我要是遇到这种同事高兴还来不及
    loveshuyuan
        5
    loveshuyuan  
    OP
       12 天前
    @kapr1k0rn 我觉得他搞的方案挺复杂的,还得调用 k8s api ,本地也不好测试
    cloudzhou
        6
    cloudzhou  
       12 天前
    就这两个事情来说,从技术上,我支持老外,并且显然他的技术水准更高

    1. 本地 process ,这简直就是短平快的产物,但是你这里需求没说清楚,k8s job vs mq 是两个不同的东西,k8s job 和 taskiq 场景也很不同,为什么能拿出来比较

    2. 一个 Dockerfile ,通过不同 cmd 来分别启动 backend 和 worker ,他非得让拆成两个 Dockerfile...

    这事情我更支持老外了,“明确大于其他”,使用 cmd 这玩意,很容易弄错
    老外很具有云原生观念,就是一个事情,能用原生用原生,能明确就明确
    mrzx
       7
    mrzx  
       12 天前
    @loveshuyuan 我也是支持老外,你觉得复杂的,可能后期遇到问题,处理起来就简单了....

    老外明显谨慎,做技术需要的就是谨慎...

    做技术别只考虑眼前的实施,开发简单...要考虑长远的维护..
    loveshuyuan
        8
    loveshuyuan  
    OP
       12 天前 via iPhone
    @cloudzhou #6 Dockerfile 这个可以理解吧,但是关于 job 这个东西,原始需求就是代码里面需要启动异步任务去执行长耗时的代码逻辑,然后记录任务状态、进度这些,并且支持 stop/resume ,还需要水平扩展,我感觉不太适合用 k8s job
    cloudzhou
        9
    cloudzhou  
       12 天前
    @loveshuyuan 这个我从你的需求里,看不出哪个合适,如果是长时间,并且单次执行的 job ,那么 k8s job 合适;如果类似 mq 功能,可能用 taskiq 。至于你说的 “记录任务状态、进度这些,并且支持 stop/resume ,还需要水平扩展”,我觉得 k8s job 作为这么重要一个组件,应该有生态支持的
    loveshuyuan
        10
    loveshuyuan  
    OP
       12 天前 via iPhone
    @cloudzhou #9 多次执行,前端界面触发
    cloudzhou
        11
    cloudzhou  
       12 天前
    @loveshuyuan 看代价,k8s job 因为要初始化容器,所以一般用于笨重的 job ,长久运行然后退出,比如每天统计一下报表; taskiq 比较轻量并且有结果返回,api 成熟

    我感觉这两个根本不应该拿来比较
    darksword21
        12
    darksword21  
    PRO
       12 天前
    他既然文档都写好了。。
    cryptovae
        13
    cryptovae  
       12 天前   1
    `通过不同 cmd 来分别启动 backend 和 worker ,他非得让拆成两个 Dockerfile`

    没毛,Docker 设计哲学和推荐准则, 就是一个 Docker 容器只负责一个服务,容器生命周期=主进程生命周期
    woodfizky
        14
    woodfizky  
       12 天前
    其实是好事,有个人在定你们的技术架构/实现方案,整个团队各个项目不会乱七八糟的,蛮好。
    管理上是这样没错。

    我这里也是写 Python ,几个项目在不同时期由不同人用不同的代码风格建立和维护的,当时就是缺少一个这样的角色去约束去规范各个项目,比较自由,反而导致现在有新东西要统一适配的时候十分蛋疼,比如代码风格不同、项目启动方式不同、项目 web 框架不同、等等。。。

    你如果技术上有十分明确的理由和稳妥的实现方案。
    你也可以写技术文档,或者跟他发邮件友好交流辩论一下。
    zhybb2010
        15
    zhybb2010  
       11 天前   1
    根据 OP 描述,很明显老外更专业,更懂软件工程
    DT37
        16
    DT37  
       11 天前
    问在哪能找到这样子的老外?
    SmiteChow
        17
    SmiteChow  
       11 天前
    如果要支持 checkpoint/restore 那 taskiq 是做不到的
    sampeng
        18
    sampeng  
       11 天前 via iPhone
    我也是 devops ,就 2k 的 star ,还是 python ,我也会劝用成熟方案。但不会推 k8s job 。有很多更成熟的…当然,推是推,方案是研发定。这是基本原则。我一定会说在前面:我看好这个方案,你看看,还是你懂,肯定是你定。但你要给我做好部署的方案,运维的方案给我,不是你本地跑了就没事了
    zjj19950716
        19
    zjj19950716  
       11 天前
    dockerfile 这个不分开难道还写一起吗? 那起多个 worker 的时候还要起多个 backend 吗
    neel
        20
    neel  
       11 天前
    这个老外还是很有工程师思维的,而且也挺负责的。
    flmn
        21
    flmn  
       10 天前
    k8s job 这个我站老外。
    cmd 这个我站你。

    纯从技术出发,不带感情色彩。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5860 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 28ms UTC 03:35 PVG 11:35 LAX 20:35 JFK 23:35
    Do have faith in what you're doing.
    ubao msn 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