V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
azev
V2EX  ›  问与答

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

  •  
  •   azev · 2021-02-21 09:11:09 +08:00 · 1727 次点击
    这是一个创建于 1356 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    7 条回复    2021-02-22 01:57:22 +08:00
    InternetExplorer
        1
    InternetExplorer  
       2021-02-21 09:29:18 +08:00 via iPhone
    aria2 可以作为服务器端提供接口,看看已经有的几个 webui 怎么做的就知道了
    azev
        2
    azev  
    OP
       2021-02-21 09:35:10 +08:00
    @InternetExplorer 多谢 如果是更通用些呢 比如运行下 ffmpeg
    azev
        3
    azev  
    OP
       2021-02-21 09:54:52 +08:00
    @InternetExplorer 或者是 youtube-dl 之类
    jarnanchen
        4
    jarnanchen  
       2021-02-21 10:24:20 +08:00
    web 后台调用这些服务就好了
    比如 https://www.npmjs.com/package/youtube-dl
    cpstar
        5
    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
        6
    systemcall  
       2021-02-21 16:40:24 +08:00 via Android
    aria2 这种软件一般是 json rpc 吧,如果配置文件或者命令行有加相应的参数,程序启动后就会打开对应的端口,处理这些请求。把 aria2 这类加到开机启动就可以了,反正启动也要一段时间
    启动别的程序可以写 cgi 或者 PHP 之类的,这个需要 Web 服务器支持,配置正确的话没什么问题
    不清楚你的原始需求。如果是想要下载完成后转码之类的话,我记得这些软件是有下载完成的操作的,可以定义一个命令,有一些变量可以调用,来获取一些信息(文件名这类),具体的需要看对应下载软件的文档
    ch2
        7
    ch2  
       2021-02-22 01:57:22 +08:00 via iPhone
    核心思想是把耗时任务抽象出 task 元数据缓存起来,在任务执行的过程中通过任务自带的 callback 或者使用一些系统提供的观察方法更新 task 的状态与进度,web 后台定期查询缓存,并把信息更新到 UI 上,这是耗时任务的通解
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   980 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 22:14 · PVG 06:14 · LAX 14:14 · JFK 17:14
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.