如何持续集成(CI)一个永远运行的关键Python应用程序



我用Python编写了一个24-7运行的加密交易机器人。我想通过 CI 软件 Jenkins 不断将新功能和错误修复集成到此应用程序中。但问题是我不能只是杀死应用程序,查看最新版本并重新启动应用程序;因为机器人可能在任何给定时间都有活跃的交易要出售(当前在交易中(。杀死应用程序会使机器人失去对其订单的跟踪。我正在考虑将我的活动交易数据转储到数据库中,杀死应用程序,更新它,重新启动它并从数据库加载交易数据,以恢复机器人对交易的感知。但我不确定这是否是最好的方法。有没有更好的方法可以做到这一点?

总结一下。

  1. 要保存状态,请考虑使用 Redis
  2. 侦听系统信号以触发正常关机,如下所示:

    import signal
    ... 
    def handler_stop_signals(*args, **kwargs):
     """ Handle system signals
        only SIGTERM expected to trigger this"""
        Log.log(__name__).info('Gracefully shutting down')
        my_process.shutdown()
    
    if __name__ == 'main':   
        signal.signal(signal.SIGTERM, handler_stop_signals)
    

    不需要不同的进程,命令行界面,API。注册一个侦听器,一旦发出信号,此回调将启动。欲了解更多信息,请访问此处

然后,当您想使用 jenkins 部署新版本时,只需执行服务停止或终止,然后部署并启动即可。

相关内容

最新更新