【问题标题】:Using Django as GUI for long running python process使用 Django 作为 GUI 进行长时间运行的 python 进程
【发布时间】:2018-10-27 02:42:46
【问题描述】:

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

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

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

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

【问题讨论】:

  • 这个问题对于 StackOverflow 格式来说太宽泛了,但通常的做法是使用 Celery 来完成诸如此类的异步任务。

标签: python django ipc rpc


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 2013-01-17
    • 1970-01-01
    • 1970-01-01
    • 2011-08-31
    • 2012-08-18
    • 2019-11-15
    • 1970-01-01
    • 1970-01-01
    • 2023-04-08
    相关资源
    最近更新 更多