我正在创建一个django网络服务器,允许用户运行一些"可执行文件"在本地计算机上并通过网页分析其输出。
我之前使用过Celery任务队列来运行"可执行文件"在类似的情况下。但是,在阅读了Python concurrent.futures之后,我开始怀疑是否应该在ThreadPoolExecutor
内使用ProcessPoolExecutor
或ThreadPoolExecutor
(或ProcessPoolExecutor
:D )而不是?
谷歌搜索我只能找到one relevant question将芹菜与龙卷风进行比较,并且单独使用龙卷风。
我应该在我的简单网络服务器上使用Celery还是PoolExecutor
,为什么?
答案 0 :(得分:5)
如果出现以下情况,您需要使用芹菜
除了这是一个非常成熟的图书馆,其侧面项目也可以帮助您进行UI演示,请查看Jobtastic。
如果您不需要任何列出的要点,您只需要执行此任务,而无需关心状态,也不需要特殊的可扩展性需求,而不仅仅是保持简单。
关于使用ThreadPoolExecutor
或ProcessPoolExecutor
,请记住,第二个只能接收和返回可选择的对象,并且第一个将生成附加到主进程的子线程(可能是您的Web服务器)如果你没有在另一个独立的过程中使用它,那么混合它们的方法可能有意义,具体取决于你的实现细节。