扭曲还是芹菜?哪个最适合我的带有大量SOAP调用的应用程序?

问题描述

| 我正在编写同时需要并发性和异步性的Python应用程序。我对Twisted和Celery都有一些建议,但是我很难确定哪种是此应用程序的更好选择(我都没有经验)。 该应用程序(不是Web应用程序)主要集中在向各种第三方API发出SOAP调用方面。要处理给定的数据,我需要依次调用多个API。而且我希望每个API都有一个“工人”池,这样我一次可以对每个API进行多次调用。关于此的一切都不会占用大量cpu。 更具体地说,外部进程将向该应用程序的数据库添加新的“消息”。我将需要一个工作来监视新消息,然后将其推送到流程中。该过程将包含4-5个步骤,这些步骤需要按顺序进行,但可以完全异步进行。每个步骤都会采用该消息并以某种方式对其执行操作,通常会在消息中添加详细信息。每个后续步骤将需要其之前步骤的输出。对于这些步骤中的大多数步骤,所涉及的工作集中在通常使用SOAP客户端调用第三方API,解析响应并更新消息的过程。在某些情况下,将涉及创建二进制文件(如果这是一个因素,则很难腌制)。最终,一旦完成了最后一步,我将需要更新数据库中的标记以指示此消息的整个过程已完成。 另外,由于每个步骤都将涉及等待网络响应,因此我想通过在每个步骤中同时发出多个请求来提高总体吞吐量。 Celery或Twisted是这里更合适的框架吗?如果他们都能充分解决问题,那么使用一个相对于另一个是否有优点/缺点?我还有其他事情要考虑吗?     

解决方法

           Celery或Twisted是这里更合适的框架吗? 取决于您所说的“通常适当”。   如果他们都能充分解决问题,那么使用一个相对于另一个是否有优点/缺点? 并非详尽的清单。 芹菜优点: 现成的分布式任务队列,具有速率限制,重试,远程工作者 快速发展 比较浅的学习曲线 芹菜缺点 重量级:多个进程,外部依赖 必须运行消息传递服务 应用程序“流程”需要符合Celery的设计 扭曲的优点: 轻量级:单个进程,不依赖于消息传递服务 快速发展(对于熟悉它的人) 灵活 可能更快,不需要传递“内部”消息。 扭曲的缺点: 陡峭的学习曲线 以后添加处理能力不一定那么容易。 我对两者都很熟悉,从您所说的来看,如果是我,我会选择Twisted。 我想说,使用Celery可以更快地完成它,但是使用Twisted可以使您学到更多。如果您有时间和意愿去适应陡峭的学习曲线,建议您在Twisted中进行。     ,        Celery允许您使用各种异步库(如gevent和eventlet)的异步行为。因此,您可以两全其美。 使用eventlet的示例 https://github.com/celery/celery/tree/master/examples/eventlet 使用gevent的示例 https://github.com/celery/celery/tree/master/examples/gevent     

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...