【发布时间】:2018-05-07 22:26:45
【问题描述】:
几天前我问了一个类似的问题,但有点不清楚,所以我删除了它并在这里重新制作了一个。
我有一个从加密货币交易所(Binance、Kraken、Poloniex 等)获取市场数据的项目。我希望能够在项目启动并运行时添加额外的交换。例如,我每 10 秒从 Binance 和 Poloniex 提取数据,但现在我想添加对 Kraken 的支持。如何继续从其他两个交易所获取数据(添加 Kraken 而不重新启动程序)。
我目前想到了 2 个解决方案。
- 将获取数据的客户端作为每次交换的新进程启动
- 使用
importlib.import_module()加载新模块并在同一进程中处理每个交换(使用异步)
另外,如果我想添加从另一个 API 端点获取数据等功能怎么办。方法 1 可能需要重新启动,使用方法 2 我可以重新加载所有模块并在 fetch 调用之间更新类实例。但我不确定这可能导致的副作用。
也许有一种默认方式是如何实现这样一个项目的?
【问题讨论】:
-
每个交换一个进程似乎是合理的,但即使它们都在一个进程中,重启成本真的那么高吗?您可以在另一个程序仍然处于活动状态时启动该程序,并在它准备好接管时杀死另一个程序,如果它足够重要的话。
标签: python api fetch python-asyncio cryptocurrency