生产中的动态路由,龙卷风部署

时间:2016-04-05 10:06:37

标签: python nginx dynamic routing tornado

我有4个python龙卷风线程在不同机器上的不同端口上运行。我用nginx来路由和负载均衡。所有这些代码都是相同的。它是一个异步代码。我也有一个本地文件,让我们在每个被python线程调用的机器上说function.py,做一些计算并返回答案。

我的要求是我可能需要定期更新function.py文件。但是,我不希望服务器停止重新加载该功能,因为我 不想丢弃任何传入的请求 。如果需要,我愿意将nginx更改为其他内容。任何建议将不胜感激。谢谢!

编辑: 有没有办法修改/配置nginx,只有当它们启动时才会重定向到某些服务器(比如端口8011-8014)?在这种情况下,我可以修改主python线程,然后优雅地关闭端口8011-8014。但这种配置是否可行?

1 个答案:

答案 0 :(得分:1)

更新你的python代码时,你可以在不同的端口上启动一组新的python进程(比如前一组的8001-8004和新组的8011-8014)然后修改你的nginx配置重定向到8011-8014 8001-8004并运行service nginx reload(或等效于您的操作系统)。

这样,nginx会将新请求重定向到新进程,而不会丢弃任何请求,并在之前的进程中完成挂起的请求。当你知道对旧的python进程的所有挂起请求都已完成时(这可能是非常重要的)你可以阻止它们。