web 界面跟一些长时间运行的后台任务怎么结合

2021-02-21 09:11:09 +08:00
 azev

比如 aria2 下载工具的 web 界面
前端设定参数后 怎么启动 aria2 呢? web 后台程序代码开一个 aria2 线程?还是怎么做?

1751 次点击
所在节点    问与答
7 条回复
InternetExplorer
2021-02-21 09:29:18 +08:00
aria2 可以作为服务器端提供接口,看看已经有的几个 webui 怎么做的就知道了
azev
2021-02-21 09:35:10 +08:00
@InternetExplorer 多谢 如果是更通用些呢 比如运行下 ffmpeg
azev
2021-02-21 09:54:52 +08:00
@InternetExplorer 或者是 youtube-dl 之类
jarnanchen
2021-02-21 10:24:20 +08:00
web 后台调用这些服务就好了
比如 https://www.npmjs.com/package/youtube-dl
cpstar
2021-02-21 10:26:09 +08:00
aria 的 webui 是不能启动 aria 本体的,webui 通过 aria 本体提供的 api 接口与 aria 本体进行数据交互。

这种 webui 普遍不需要服务器端的运行环境( php 、java 、python 、nodejs 等),只需要一个简单的 http 容器即可。

但是,如果需要实现启动 aria 本体或者运行 ffmpeg 等其他服务器端的本地程序,那么就需要服务器端不仅是提供 http 容器,还要提供一些运行环境,同时开权限调方法,比如 php 的 exec system 之类的,java 的 Runtime.exec 等。然后浏览器触发写有相应过程的页面,页面同步或者异步方式进行系统调用以启动相应本地程序。
systemcall
2021-02-21 16:40:24 +08:00
aria2 这种软件一般是 json rpc 吧,如果配置文件或者命令行有加相应的参数,程序启动后就会打开对应的端口,处理这些请求。把 aria2 这类加到开机启动就可以了,反正启动也要一段时间
启动别的程序可以写 cgi 或者 PHP 之类的,这个需要 Web 服务器支持,配置正确的话没什么问题
不清楚你的原始需求。如果是想要下载完成后转码之类的话,我记得这些软件是有下载完成的操作的,可以定义一个命令,有一些变量可以调用,来获取一些信息(文件名这类),具体的需要看对应下载软件的文档
ch2
2021-02-22 01:57:22 +08:00
核心思想是把耗时任务抽象出 task 元数据缓存起来,在任务执行的过程中通过任务自带的 callback 或者使用一些系统提供的观察方法更新 task 的状态与进度,web 后台定期查询缓存,并把信息更新到 UI 上,这是耗时任务的通解

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/754773

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX