V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
xzc2677
V2EX  ›  问与答

有脚本每隔 1s 访问一个页面,如果有更新会生成一个静态 html 页面并 git push 到 coding 上。现在的问题是如果有两次间隔很短的 git push 就会出错(第一次 push 未结束)

  •  
  •   xzc2677 · 2019-11-21 22:12:21 +08:00 · 1729 次点击
    这是一个创建于 1830 天前的主题,其中的信息可能已经有所发展或是发生改变。

    询问解决方案。没有国内的云主机,也不想自己写一个 server。 脚本用的是 typescript,关键代码大概这样:

     const writeFile = util.promisify(fs.writeFile)
     await writeFile(`${repoPath}/${name}.html`, article)
     await exec(`cd ${repoPath}; git pull; git add --all; git commit -m "auto commit" && git push origin master`)
    
    
    10 条回复    2019-11-21 23:53:10 +08:00
    vanillaxxx
        1
    vanillaxxx  
       2019-11-21 22:23:36 +08:00 via iPhone
    降低 push 频率咋样?
    JiShuTui
        2
    JiShuTui  
       2019-11-21 22:26:02 +08:00
    加上锁,上一次没结束,这一次就不执行。
    另外,你只是自己一个人用吧,每 5 分 push 一次也行啊
    xzc2677
        3
    xzc2677  
    OP
       2019-11-21 22:26:09 +08:00
    @parorisim 不行,实时性要求比较高。
    xzc2677
        4
    xzc2677  
    OP
       2019-11-21 22:28:53 +08:00
    @JiShuTui 不是一个人用。加锁是一个备选方案。我在想有没有代替 git 的方案?或者有么有这类的服务,类似于 server 酱。
    xxx749
        5
    xxx749  
       2019-11-21 22:33:57 +08:00 via Android
    加个任务栈,只在 push 结束后 push 第二个任务,爬虫就只管往栈里推就好了吧
    xzc2677
        6
    xzc2677  
    OP
       2019-11-21 22:37:59 +08:00
    @xxx749 感觉可行!是任务队列吧,一个一个进。感谢!
    opengps
        7
    opengps  
       2019-11-21 22:43:02 +08:00 via Android
    用线程池来提交,同时控制好不要让整个线程池都工作起来
    CEBBCAT
        8
    CEBBCAT  
       2019-11-21 23:16:13 +08:00
    先分析问题本质:有一个频繁更新的文件夹,里面有很多 html 文件,需要使用 Coding 的 Page 服务发布出来,似乎 Coding 只提供 git,要是使用 git push 推送的话容易因为上一次 push 未完成影响这一次 push

    整个信号量,有 html 生成就给计数器+1,另一边每次 git push 就给计数器-1,push 前记得检查有没有待 git add 的文件
    CEBBCAT
        9
    CEBBCAT  
       2019-11-21 23:17:30 +08:00
    两边各干各的,效率也高
    xzc2677
        10
    xzc2677  
    OP
       2019-11-21 23:53:10 +08:00
    @CEBBCAT thx 一个新思路。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   914 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 20:16 · PVG 04:16 · LAX 12:16 · JFK 15:16
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.