Celery vs. ProcessPoolExecutor / ThreadPoolExecutor



我正在创建一个django Web服务器,该服务器允许用户在本地机器上运行一些"可执行文件",并通过网页分析其输出。

我以前使用过Celery任务队列,以便在类似情况下运行"可执行文件"。然而,在阅读了Python concurrent.futures之后,我开始怀疑是否应该使用ThreadPoolExecutorProcessPoolExecutor(或ProcessPoolExecutor:D中的ThreadPoolExecutor)?

在谷歌上搜索,我只找到了一个将芹菜与龙卷风进行比较的相关问题,它转向了单独使用龙卷风。

那么,对于我的简单Web服务器,我应该使用Celery还是PoolExecutor?为什么?

如果:,则需要使用芹菜

  1. 您希望轻松地独立于Web服务器进行扩展
  2. 您想要一种方法来监视您的任务,并在任务失败时重试
  3. 您想要创建更高级的任务执行模式(例如,将它们链接起来)

除此之外,这是一个非常成熟的库,带有辅助项目,可以帮助您在UI演示方面,看看Jobtastic。

如果您不需要列出的任何一点,而只需要执行此任务,而不关心状态,也不需要特别的可扩展性需求,那么只需保持简单即可。

关于使用ThreadPoolExecutorProcessPoolExecutor,请记住,第二个将只能接收和返回可拾取对象,第一个将生成附加到主进程的子线程(如果您没有在另一个分离的进程中使用它,则可能是您的Web服务器),因此根据实现的细节,混合它们的方法是有意义的。

相关内容

  • 没有找到相关文章

最新更新