我用Python编写了一个加密交易机器人,运行24-7。我想通过CI软件Jenkins不断地将新功能和错误修复集成到这个应用程序。但问题是我无法杀死应用程序,检查最新版本并重新启动应用程序;因为机器人可能在任何给定时间都有活跃的交易(目前在交易中)。杀死应用程序会使机器人松动其订单。我正在考虑将我的活动交易数据转储到数据库中,终止应用程序,更新它,重新启动它并从数据库加载交易数据以恢复机器人对交易的意识。但我不确定这是否是最好的方法。有更好的方法吗?
答案 0 :(得分:1)
总结一下。
收听系统信号以触发正常关机,如下所示:
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)
不需要不同的过程,cli,api。注册一个监听器,一旦发出信号,这个回调就会启动。 有关详细信息,请转到here
然后,当您想使用jenkins部署新版本时,只需停止或终止服务,然后部署并启动。