常见情况:我的服务器上有一个客户端可能会更新他的python项目中的一些代码。他可以ssh进入他的shell并从他的存储库中取出并且一切都很好 - 但代码存储在内存中(据我所知)所以我需要实际杀死fastcgi进程并重新启动它以使代码更改。 / p>
我知道我可以gracefully restart fcgi,但我不想手动执行此操作。我希望我的客户端更新代码,并在5分钟内或其他任何时间,让新代码在fcgi进程下运行。
由于
答案 0 :(得分:1)
首先,如果正常运行时间对您很重要,我建议客户这样做。它可以像给他一个名为deploy-code的命令一样简单。使用您的方法,如果他们的代码中存在错误,您的方法需要10分钟的周转时间(读取:停机时间)来修复它,假设他正确无误。
也就是说,如果你真的想要这样做,你应该创建一个守护进程,它将寻找在最后5分钟内修改过的文件。如果检测到一个,它将执行reboot命令。
代码可能类似于:
import os, time
CODE_DIR = '/tmp/foo'
while True:
if restarted = True:
restarted = False
time.sleep(5*60)
for root, dirs, files in os.walk(CODE_DIR):
if restarted=True:
break
for filename in files:
if restared=True:
break
updated_on = os.path.getmtime(os.path.join(root, filename))
current_time = time.time()
if current_time - updated_on <= 6 * 60: # 6 min
# 6 min could offer false negatives, but that's better
# than false positives
restarted = True
print "We should execute the restart command here."