deployment - 部署和更新长期运行的流程的好方法是什么?
问题描述
我有一个在服务器上运行的进程。
仅供参考,我正在尝试为 nodejs 和 Python 解决相同的问题 - 我真的不认为特定的服务器/语言很重要,因为问题更多的是关于部署方法。
该过程所做的工作可能需要几秒钟到几小时才能运行。
我正在尝试解决如何为流程部署更新的代码。
我不想只是在它正在做的事情中间停止这个过程,因为害怕失去在长期运行的过程中到目前为止所做的所有工作。
那么,当新代码到达时,让进程优雅地退出并重新启动的好方法是什么?
我使用 systemd 来运行 nodejs 服务。
我使用 Ansible 来部署更新,并不是说这真的很重要。
我想也许在每次执行长时间运行的过程结束时,服务器可以检查是否某些文件已作为某种标志放置在磁盘上,以指示它应该退出并重新启动,但这似乎有点脆弱和 hacky。
有没有人对这种事情有更好的机制?
解决方案
推荐阅读
- qt - QFileDialog 在删除多个文件夹时使应用程序崩溃
- python - 在 django 模板中的字典中迭代字典
- .net-core - Nuget PackageReference 的资产
- java - 我想知道我的结构是否适合我制作的应用程序
- python - ECS上为数据处理项目搭建docker容器的最佳实践
- php - PHP - 在数组末尾添加元素
- ios - for循环项目的值没有改变
- batch-file - 批处理 - 获取特定机器上打开特定程序的用户列表?
- sql-server - T-SQL CTE 获取父级
- maven - Maven 清除本地依赖标记在 pom.xml 中不起作用