我正在开发一个守护进程,我可以在一个容器中运行该守护进程,该容器将持续获取实时数据并将其提供给其他方使用的redi,我一直打算附加一个REST API,该API将提供有关redi连接状态的信息,并允许指示该守护进程也发布到其他redi实例。
在使用python模块falcon运行了基本的API之后,我意识到这个守护进程现在需要同时做两件事,因此我需要使用几个线程或其他异步机制。
这就提出了两个问题:
1( 这种将连续守护进程和RESTneneneba API结合起来的构造是一个常见的还是明智的决定?对我来说,能够以基于网络的方式与守护进程交互,允许更强的集成测试等等,这似乎很有价值,但也许这太过分了,麻烦也比它值的多?我想,另一种选择是通过配置文件对其进行配置,并根据输出数据监控其运行状况。
2( 如果我继续这个选择,那么对于实现双重行为,线程还是异步,框架的最明智选择是什么?也许没有什么大的区别,但我很乐意听到一两个建议。
非常感谢,Kerzane。
- 1(我认为对于您想要获得的行为,异步REST API是有意义的,比如发布/插入/启动分析的POST/PUT和检索状态和其他信息的GET可能是一个很好的决定,对于一些替代方法,请查看gRPC,但我不确定是否对您的情况有用
- 2( 主要区别在于:通常异步在"硬件"级别比线程库使用的"应用程序"级别更具性能;出于同样的原因,线程为您提供了对线程的"更多控制",而不是为您管理一些高级细节的asyncio。我的句子中可能有一些言过其实的地方,我建议你读一下这些文章:https://medium.com/@nhumrich/asynchronous-python-45df84b82434,https://medium.com/analytics-vidhya/asyncio-threading-and-multiprocessing-in-python-4f5ff6ca75e8,https://towardsdatascience.com/a-better-way-for-asynchronous-programming-asyncio-over-multi-threading-3457d82b3295同时阅读两个libreries的所有文档,以便更好地理解各种用例