首页 > 解决方案 > 使用 Django 作为 GUI 进行长时间运行的 python 进程

问题描述

这是一个关于建筑的问题。假设我在服务器上有一个长时间运行的过程,例如在训练过程中的机器学习。现在,当它在外部机器上运行时,我想要一个工具来快速查看结果。所以我认为最好的方法是建立一个快速连接到进程的网站,例如使用 RPC 来显示结果,因为这允许我始终签入。现在的问题是 Django 视图应该如何从服务器进程中收集信息:

1)直接在视图中使用rpyc等RPC调用?

2) 使用某种消息队列,例如 celery ?

3)或者以我没有看到的完全不同的方式?

标签: pythondjangoipcrpc

解决方案


至少有两种可能的方法来做到这一点。

  1. 将你的数据刷新功能实现为一个视图,并通过ajax(sync)+javascript计时器访问它。由于你访问了包含这些js的页面,它会静默地获取你的数据并更新页面。但是,当您需要以给定频率记录所有数据时,此解决方案效果不佳;ajax/view 仅在网页打开时执行。

  2. 使用 selcuk 建议的消息队列。除了 celery,APscheduler 也是一个不错的选择,因为它更易于安装和使用。您可以实现一个任务(作为模式)队列,状态为(队列/完成/停止/任何作为字段)并检查它们以您想要的频率,保存您检索的日期并执行所有其他操作。


推荐阅读