gpt4 book ai didi

dask - 我怎样才能在与提交它的机器不同的机器上获得 Dask 计算的结果?

转载 作者:行者123 更新时间:2023-12-04 17:38:49 26 4
gpt4 key购买 nike

我在 Django 服务器后面使用 Dask,这里总结了我的基本设置:https://github.com/MoonVision/django-dask-demo/可以在这里找到 Dask 客户端:https://github.com/MoonVision/django-dask-demo/blob/master/demo/daskmanager/daskmanager.py

我希望能够将任务的保存与提交任务的服务器分开,以实现稳健性和可伸缩性。我还想了解有关任务处理状态的更多详细信息,现在即使任务正在处理, future 状态也始终处于待定状态。粗略估计完成百分比也很好。

现在,如果 Web 服务器挂掉,客户端将被删除并且任务将停止,因为没有客户端仍然持有 future 。我可以通过使用 fire_and_forget 来解决这个问题但是我无法在任务完成时保存任务状态和结果。

我看到的跟踪状态并在 fire_and_forget 后保存结果的方法:

  1. 我可以有一个调度程序插件,将所有传输发送到 AMPQ 服务器 (RabbitMQ)。我喜欢这种健壮性,能够订阅调度程序输出的某些消息,并且知道每条消息都会被处理。我不确定如何使用这种方法自行获得结果。我可以在每个图表的末尾手动添加一个节点来保存结果,但宁愿将其隐藏在幕后。

  2. get_task_stream在单独的服务器上或以某种方式使用它。有了这个,如果服务器出现故障,我似乎可能会错过一些消息,所以这似乎是一个更糟糕的选择 1。

  3. 其他选择?

实现此目标的最佳方法是什么?

编辑:刚刚测试过,似乎当提交任务的客户端关闭时,它创建的所有 future 都从处理中转移到遗忘状态,即使调用 fire_and_forget。

最佳答案

您可能想看看 Dask 的协调原语,例如队列和发布/订阅。我的猜测是,将您的 future 放入队列中可以解决您的问题。

https://docs.dask.org/en/latest/futures.html#coordination-primitives

关于dask - 我怎样才能在与提交它的机器不同的机器上获得 Dask 计算的结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55513623/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com