扭曲或芹菜?哪个适合我的应用程序有很多SOAP调用?

Ada*_*evy 29 python concurrency soap twisted celery

我正在编写一个需要并发和异步性的Python应用程序.我已经为Twisted和Celery提出了一些建议,但是我无法确定哪个是这个应用程序的更好选择(我没有任何经验).

应用程序(不是Web应用程序)主要围绕向各种第三方API发出SOAP调用.要处理给定的数据,我需要按顺序调用几个API.而且我希望能够为每个API提供一个"工作者"池,这样我就可以一次为每个API拨打多个电话.没有什么关于这应该是非常密集的cpu.

更具体地说,外部进程将向该应用程序的数据库添加新的"消息".我需要一份监视新消息的工作,然后将它们推送到Process.该过程将包含4-5个步骤,这些步骤需要按顺序发生,但可以完全异步发生.每个步骤都将接收消息并以某种方式对其进行操作,通常会向消息添加详细信息.每个后续步骤都需要从其前面的步骤输出.对于大多数这些步骤,所涉及的工作主要围绕通常使用SOAP客户端调用第三方API,解析响应以及更新消息.一些案例将涉及创建二进制文件(如果这是一个因素,则更难腌制).最后,一旦最后一步完成,我将需要更新数据库中的标志,以指示完成此消息的整个过程.

此外,由于每个步骤都涉及等待网络响应,因此我希望通过在每个步骤中同时发出多个请求来提高整体吞吐量.

Celery或Twisted是一个更普遍合适的框架吗?如果他们都能充分解决问题,那么使用一个与另一个是否有利有弊?还有什么我应该考虑的吗?

Mat*_*ttH 16

Celery或Twisted是一个更普遍合适的框架吗?

取决于你的意思"一般适当".

如果他们都能充分解决问题,那么使用一个与另一个是否有利有弊?

不是一个详尽的清单.

芹菜优点:

  • 现成的分布式任务队列,具有速率限制,重试,远程工作人员
  • 快速发展
  • 比较浅的学习曲线

芹菜缺点:

  • 重量级:多个进程,外部依赖
  • 必须运行消息传递服务
  • 应用程序"流程"需要适合Celery的设计

扭曲的优点:

  • 轻量级:单个进程,不依赖于消息传递服务
  • 快速发展(熟悉它的人)
  • 灵活
  • 可能更快,不需要"内部"消息传递.

扭曲的缺点:

  • 陡峭的学习曲线
  • 以后添加处理能力不一定容易.

我对两者都很熟悉,从你所说的,如果是我,我会选择Twisted.

我会说你会使用Celery更快地完成它,但是你可以通过使用Twisted来学习更多.如果您有时间和倾向于遵循陡峭的学习曲线,我建议您在Twisted中执行此操作.

  • 我对有关"陡峭的学习曲线"的评论提出异议.扭曲很简单有趣:-).此外,Twisted允许您使用`spawnProcess`生成多个进程(如果需要).这可能不是那么容易,但它至少是可能的; 如果您需要使用Celery,则无法在以后写入非阻塞API.但除此之外,这是一个合理的比较. (2认同)
  • @Glyph,正式注意到了问题.我衷心同意"有趣".我认为你可能对"轻松"有偏见.当你知道如何开始使用Twisted需要很多"知道"时,事情很容易,这就是为什么我在SO上关注标签并在可能时提供帮助的原因. (2认同)