gpt4 book ai didi

python - 如何在多台服务器上实现 Web 应用程序的自动更新功能?

转载 作者:行者123 更新时间:2023-12-04 20:08:43 25 4
gpt4 key购买 nike

关闭。这个问题需要更多focused .它目前不接受答案。












想改善这个问题吗?更新问题,使其仅关注一个问题 editing this post .

7年前关闭。




Improve this question




我需要一个想法如何实现以下
1.想要构建python应用程序,当新补丁可用时会自动更新
2. 将运行单元测试以检查补丁是否部署成功
3.如果安装过程中出现任何故障会自动回滚

我不知道的
A. 不确定如何从源代码构建补丁
B. 检查新更新是否可用的算法/标准流程
C. 自动部署/回滚流程

任何建议/链接?

最佳答案

我实现了一个服务器,它可以识别更改的源代码并提取新代码。它托管在 pythonanywhere.comthis url代码在 github .这个答案基于我在实现更新功能时的经验。

当您使用 git 版本代码时你通常

  • 有一个有效的 master 或 deploy 分支
  • 有一个开发分支,当所有测试都通过时,它会合并到 master-->deploy 分支中。

  • 通过这种方式,您只需要知道部署分支何时更改即可确定何时重新启动。为了避免停机,应该先运行测试。如果您在部署系统上运行测试,可能会花费太多时间,或者无效代码会破坏系统。
    所以部署分支可以工作,因为它之前已经过测试。

    对于自动化测试,您可以使用持续集成服务器,例如 travis下载代码并测试它。可以询问特定提交的测试是否运行。

    当您在 github 上托管您的代码时,您可以指定推送 http 地址。我用过 http://server/update每当存储库更改时,github 都会通知您的服务器。

    然后,您可以通过从 git 中拉取源代码来更新源代码,如果部署分支确实发生了变化,那么您可以重新启动应用程序。我不能在服务器中做到这一点,也许你可以。

    场景:
  • 我把代码推送到 github
  • github 发送 POST 到 http://server/update
  • @post('/update') # bottle code
    def pull_own_source_code_and_restart():
    with inDirectory(server_repository):
    previous_commit = last_commit()
    text = git.pull()
    current_commit = last_commit()
    if previous_commit != current_commit:
    restart()
    return "Git says: {}".format(text)

    看看这两个文件:
  • command_line.py对于 git 命令
  • bottle_app.py如果服务器无法自行重启,则用于派生实现。

  • 版本控制系统通常为每个版本进行“修补”。我用 git。如果您现在不知道 git,请学习它!这是 Python Django 和 git 的研讨会 Material : http://www.opentechschool.org/material.html

    现在让我看看这些信息是否足以在 Django 中实现这样的功能。当你让它工作时,请在这里发布你的代码。

    关于python - 如何在多台服务器上实现 Web 应用程序的自动更新功能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21598153/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com