这是一个关于架构的问题。假设我在服务器上有一个长时间运行的过程,例如在培训过程中进行机器学习。现在,由于这在外部机器上运行,我希望有一个工具可以不时地快速查看结果。所以我认为最好的方法是建立一个快速连接到流程的网站,例如使用RPC来显示结果,这样我就可以随时检查。现在的问题是Django如何从服务器进程收集信息:
1)在视图中直接使用rpyc之类的RPC调用吗?
2)使用某种消息队列,如芹菜?
3)或者以一种完全不同的方式我没有看到?
答案 0 :(得分:0)
至少有两种方法可以做到这一点。
将您的数据刷新功能实现为视图并通过ajax(sync)+ javascript timer访问它。由于您访问包含这些js的页面,它将以静默方式获取您的数据并更新页面。但是,当您需要以给定频率记录所有数据时,此解决方案无法正常工作; ajax / view仅在网页打开时执行。
像selcuk建议的那样使用消息队列。在芹菜旁边,APscheduler也是一个不错的选择,因为它更容易安装和使用。你可以用状态(queue / done / stoped / whatever)实现任务(作为模态)队列作为字段)并按照您想要的频率检查它们,保存您检索的日期并执行所有其他操作。