我在Django服务器后面使用Dask,我在这里总结了基本设置:https://github.com/MoonVision/django-dask-demo/可以在这里找到Dask客户端:https://github.com/MoonVision/django-dask-demo/blob/master/demo/daskmanager/daskmanager.py
我希望能够将任务的保存与提交它的服务器分开,以实现健壮性和可伸缩性。我还想了解有关任务处理状态的更多详细信息,现在即使任务正在处理,未来状态也始终处于待处理状态。粗略估计完成百分比也很棒。
现在,如果Web服务器死了,客户端将被删除,任务将停止,因为没有客户端仍然持有未来。我可以通过使用fire_and_forget解决这个问题,但是当它完成时我无法保存任务状态和结果。
我看到如何跟踪状态并在fire_and_forget之后保存结果:
实现这一目标的最佳方法是什么?
编辑:刚刚测试过,当提交任务的客户端关闭时,即使调用fire_and_forget,它创建的所有期货也会从处理转移到忘记状态。
您可能希望查看Dask的协调原语,如Queues和Pub / Sub。我的猜测是将你的期货放入队列可以解决你的问题。
https://docs.dask.org/en/latest/futures.html#coordination-primitives