如何在不同于提交Dask计算的机器上获得Dask计算的结果?

如何在不同于提交Dask计算的机器上获得Dask计算的结果?,dask,dask-distributed,dask-delayed,Dask,Dask Distributed,Dask Delayed,我在Django服务器后面使用Dask,这里总结了我的基本设置:在这里可以找到Dask客户端: 我希望能够将任务的保存与提交任务的服务器分开,以实现健壮性和可伸缩性。我还想了解更多关于任务处理状态的详细信息,目前,即使任务正在处理,未来状态始终处于挂起状态。有一个完成百分比的粗略估计也很好 现在,如果web服务器死掉,客户端将被删除,任务将停止,因为没有客户端仍然拥有未来。我可以通过使用解决这个问题,但是当任务完成时,我无法保存任务状态和结果 火灾和遗忘后跟踪状态和保存结果的方法: 我可以有一个

我在Django服务器后面使用Dask,这里总结了我的基本设置:在这里可以找到Dask客户端:

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

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

火灾和遗忘后跟踪状态和保存结果的方法:

  • 我可以有一个调度器插件,将所有传输发送到AMPQ服务器(RabbitMQ)。我喜欢健壮性,能够订阅调度器输出的特定消息,并且知道每个消息都将被处理。我不知道用这种方法我怎么能得到它自己的结果。我可以手动在每个图形的末尾添加一个节点来保存结果,但我更希望它在幕后

  • 在单独的服务器上或以某种方式使用它。这样一来,如果服务器宕机,我可能会错过一些消息,所以这似乎是一个更糟糕的选择1

  • 其他选择

  • 实现这一目标的最佳方式是什么


    编辑:刚刚测试过,似乎当提交任务的客户端关闭时,它创建的所有未来都从处理转移到遗忘,即使打电话给fire_和_忘记。

    你也可能想看看达斯克的协调原则,比如排队和酒吧/酒吧。我的猜测是,把你的未来放在一个队列中可以解决你的问题


    谢谢,这正是我需要的。将未来放入队列,以便客户端可以重新启动,并让单独的进程检查队列中是否有已完成的未来。谢谢期货可以存储在像redis商店这样的东西里吗?未来的钥匙可以是,任何过程都可以用这个钥匙重建未来。不过,这只是一个指针。您仍然需要Dask在某个地方把握未来,以确保数据得以保存。