不确定我是否应该使用芹菜



我以前从未使用过芹菜,我也是一个django新手,所以我不确定我是否应该在我的项目中使用芹菜。

我的项目简介:

有一个用于将(通过SSH)作业发送到科学计算集群的API。API 是不同科学作业队列供应商的抽象。http://saga-project.github.io/saga-python/我的项目基本上是关于使用 django 为这个 API 做一个 Web GUI。

因此,我担心的是,如果我使用芹菜,我将在本地 Web 服务器中有一个队列,在每个远程群集中都有一个队列。恐怕这可能会使实施不必要地复杂化。

该 API 仍在开发中,某些功能尚未完全完成。有一个函数用于检查远程作业执行的状态(正在运行、已完成等),但对状态更改的回调支持尚未准备就绪。这是我认为芹菜可能合适的地方。我将有一个或多个定期任务来监视作业状态。

请问关于如何进行的任何建议?完全没有芹菜?芹菜什么都有?芹菜只是为了工作状态?

我将芹菜用于类似的目的,效果很好。基本上,我有一个节点运行管理整个集群的芹菜工作线程。这些工作线程为群集节点生成输入数据,分配任务,处理结果以报告或生成相关任务。

每个群集节点都运行一个非常小的 python 服务器,该服务器采用其分配作业的数据库 ID。然后,它调用主 (http) 服务器以请求所需的数据,并最终在完成后将数据发回。就我而言,各个节点不需要相互发送消息,并且每个任务的运行时间都很长(数小时)。这使得中央管理和轮询带来的延迟微不足道。

可以在

每个节点上运行一个芹菜工作线程,直接从消息队列中获取任务。这种做法很有吸引力。但是,我有复杂的依赖项,可以从集中式控制中更容易解决。此外,我有时需要对集群进行分段,而集中控制使这成为可能。

芹菜不擅长管理优先级或恢复丢失的任务(更多集中控制的原因)。

感谢您提请我注意SAGA。我现在正在查看它,看看它是否对我有用。

Celery 对于执行在 HTTP 请求处理程序(即 Django 视图)中执行的成本太高的任务很有用。考虑从 Django 视图向某个远程 Web 服务器发出 HTTP 请求,并考虑延迟、可能的超时、数据传输时间等。使用 Celery 对计算密集型任务进行排队也需要花费大量时间进行后台执行。

我们只能猜测 API 的 Web GUI 应该做什么。然而,Celery 非常适合将请求排队到科学计算集群。它还允许跟踪后台任务的状态及其结果。

我不理解您对不同服务器上有许多队列的担忧。你可以让 Django、Celery 代理(实现任务队列)和工作进程(使用队列和执行 Celery 任务)都在同一台服务器上。

相关内容

  • 没有找到相关文章