新开发人员尝试在不重新加载页面的情况下在 Django 上执行 运行 任务。可能 Alpine.js

New Developer trying to run task on Django without page reload. Possibly Alpine.js

好久reader。第一次海报。我已经在 Windows 唯一的房子里使用 Django 站点大约 2 年了。我们正在使用 Paramiko 在 Cisco 网络设备上 运行ning 脚本。这些任务有时 运行 在多个设备上进行,并且很耗时(从 20 秒到 3 分钟不等)。我想提交脚本进行处理并在脚本 运行s 时为用户提供实时更新。我的研究表明 Javascript 可以通过 Ajax 不需要重新加载页面来做到这一点。由于其简单性,我想尝试使用 Alpine.js。我的背景是更简单的静态 HTML/CSS 类型网站。

现在有人试过Django/Alpine组合吗?我知道 Channels/Redis/Celery 很流行,但是这些异步请求是一件很麻烦的事情,我觉得一个完整的任务队列管理器完全是矫枉过正,而此时对我来说还不兼容 Windows。

我不是在寻找特定的代码来解决我的问题,而是在寻找更多关于如何 "best" 处理用户等待脚本的问题的指导。

Alpine.js 可以满足您的目的。它旨在与数据获取 API 和 fetch Web API 和 JavaScript HTTP 客户端等库很好地配合使用。

它很容易融入您的工作流程,因为您只需包含一个 HTML script 标记并开始编写 Alpine.js 组件,因此它非常适合 Django/other 服务器呈现类型的应用程序,这是您需要一点客户端交互性的少数实例之一。

至于 queuing/job 跟踪,您真正需要的只是以某种方式跟踪脚本 runs/jobs 并拥有一个能够将此信息公开给您的 HTTP API 端点通过 HTTP 调用的前端(即您的 Alpine.js 小部件)。