新闻详情

新闻详情

首页 / 资讯中心 / 详情

changedetection.io 怎么查看当前检查队列并取消运行中的卡住任务

发布时间:2026/9/12 2:58:52来源:尧图网络
changedetection.io 怎么查看当前检查队列并取消运行中的卡住任务
changedetection.io 怎么查看当前检查队列并取消运行中的卡住任务【免费下载链接】changedetection.ioBest and simplest tool for website change detection, web page monitoring, and website change alerts. Perfect for tracking content changes, price drops, restock alerts, and website defacement monitoring—all for free or enjoy our SaaS plan!项目地址: https://gitcode.com/GitHub_Trending/ch/changedetection.io当你监看的页面变多、或者某个页面检查卡住不动时changedetection.io 的内置队列页可以帮你回答两个问题现在哪些检查正在被 worker 执行、哪些还排在队里以及如何立即取消一个运行中却卡住的检查。队列页位于应用的/queue路由取消运行中任务走/queue/cancel-running接口清空排队项走/queue/clear接口这三个入口都在 blueprint/ui/queue.py 中定义。前提条件一个已启动的 changedetection.io 实例。Docker 启动命令见 README.mddocker run -d --restart always -p 127.0.0.1:5000:5000 -v datastore-volume:/datastore --name changedetection.io dgtlmoon/changedetection.io浏览器访问http://127.0.0.1:5000以你实际映射的端口为准。如果你的实例设置了登录口令队列页和取消接口都要求先登录三个路由都挂了login_optionally_required装饰器未设口令时可直接访问。实例启动时会按FETCH_WORKERS环境变量默认值10见 worker_pool.py拉起检查 worker。worker 为 0 时页面会显示 “No workers configured (FETCH_WORKERS0) and queue is empty”此时不存在可取消的运行中任务。打开队列页查看当前状态侧边栏中有两个入口指向同一个页面见 templates/sidebar-nav.html“Queue” 菜单项右侧的计数徽标就是当前排队项数量底部的 “Checking now: N” 链接N 是当前正在执行检查的数量。点击后进入/queue页面页面标题为 “Check queue”。页面分两部分顶部统计条Workersworker 总数、Running now正在执行的检查数、Queued排队中的检查数以及一个 “Clear Queue” 按钮。“Workers queue” 表格按 worker 槽位列出正在执行的检查再列出排队中的检查。列包括序号worker 编号或队列位置、Watch标题和 URL若 watch 已被删除则显示 “Watch no longer exists”、Elapsed该检查已运行/已排队的时长、Status。判断某个检查是否卡住就看运行中行的 Elapsed 列同一行长时间停留在 “running” 状态且时长持续增长而排队项的数字不再减少就说明这个 worker 卡在了这个 UUID 上。行状态有三种runningworker 正在执行行尾有一个cancel链接idleworker 槽位空闲显示 “— idle”done检查刚完成行会保留约 60 秒再淡出见 queue.html 中COMPLETION_GRACE_MS 60 * 1000。排队行最右列显示优先级标签immediate手动/立即重查、clone克隆跟随检查、scheduled调度器按时间入队对应 queue.py 中PRIORITY_LABELS的约定。页面通过 WebSocket 事件watch_update、queue_size、watch_deleted外加 8 秒周期轮询自动刷新不需要手动 F5。用 /queue.json 获取机器可读的队列快照页面本身每 8 秒会拉取的正是GET /queue.json你可以直接请求它来核对状态大队列时用?pageN翻页每页大小取设置的pager_size默认 50。返回结构示例数值随实际队列变化{ worker_count: 10, running_count: 1, queued_count: 3, summary: { immediate: 1, clone: 1, scheduled: 1, priority_breakdown: {} }, running: [ { uuid: 运行中检查的UUID, title: 页面标题, url: https://example.com/page, started_at: 1750000000.0, last_error: null, paused: false, gone: false } ], queued: [ { uuid: 排队检查的UUID, title: 页面标题, url: https://example.com/other, position: 0, priority: 1, priority_label: immediate, enqueued_at: 1750000001.0, gone: false } ], page: 1, per_page: 50, total_pages: 1 }排查卡住任务时running数组里每项的uuid就是下一步取消操作需要的参数last_error若不为空通常能直接说明这次检查失败的原因。取消一个运行中卡住的任务方式一在页面点击 cancel在 “Workers queue” 表格的运行行 Status 列中点击cancel链接即可前端会带着该行的uuid提交到/queue/cancel-running成功后页面自动刷新该行从 running 区消失。方式二直接调接口curl -X POST http://127.0.0.1:5000/queue/cancel-running \ --data-urlencode uuid替换为 /queue.json 中 running 项的 uuid结果判断见 queue.py 中queue_cancel_running路由和 test_queue_ui.py 中test_cancel_running_endpoint成功HTTP 200返回{ok: true, cancelled: true, worker_id: worker编号, replaced: true}uuid为空HTTP 400{ok: false, error: missing uuid}该 UUID 当前并不在运行中HTTP 404{ok: false, error: uuid not currently running, ...}——如果刚取消完又点了一次得到 404 是正常现象。取消的机制在 worker_pool.py 的cancel_running_uuid()中直接停掉正在处理该 UUID 的那个 worker 线程随后立即拉起一个替代 worker使并发数保持在你配置的FETCH_WORKERS水平响应中的replaced字段表示替代 worker 是否启动成功。也就是说取消只影响这一个卡住的检查不会中断其他 worker。验证取消生效再请求一次GET /queue.json确认该uuid不再出现在running数组中测试中的判断方式即all(r[uuid] ! synth for r in snap[running])。之后这个 watch 会在下一次调度时按正常节奏重新入队。清空排队中的检查可选如果队列里积压了大量你不再想执行的检查点击页面右上角的 “Clear Queue” 按钮即POST /queue/clear。确认框会提示“This will remove every pending check from the queue. Running checks will continue.”——也就是说它只移除排队项不会中断正在执行的检查执行中的卡住任务仍需用上一条的 cancel 单独处理。操作成功后页面会显示 “Queue cleared (N items removed).” 的提示其中 N 为移除的排队项数量。验证方式再请求/queue.jsonqueued_count应为 0而running_count保持清除前的数值见 test_queue_ui.py 中test_queue_state_full_lifecycle的断言。限制与注意事项cancel 只能作用于当前正在运行的检查排队中的单项没有独立的取消入口只能整体 Clear Queue 或删除对应 watch。取消接口按uuid精确匹配UUID 取自/queue.json的running项或队列页面上每行的data-uuid属性不要手填。若 watch 在队列期间被删除页面和 JSON 中该条目会标记为gone: true并显示 “Watch no longer exists”不影响其他条目。队列页每页显示条数由应用设置中的pager_size默认 50决定超出一页时用?pageN翻页。完成上述操作后卡住的检查被终止、worker 并发恢复到配置值、排队项按你的意愿清空或继续执行队列页的 “Checking now” 计数随之回落到实际在跑的数量这就是任务完成的标志。【免费下载链接】changedetection.ioBest and simplest tool for website change detection, web page monitoring, and website change alerts. Perfect for tracking content changes, price drops, restock alerts, and website defacement monitoring—all for free or enjoy our SaaS plan!项目地址: https://gitcode.com/GitHub_Trending/ch/changedetection.io创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

Spring Boot集成OpenTelemetry实现分布式链路追踪实战 2026/9/12 4:44:06

Spring Boot集成OpenTelemetry实现分布式链路追踪实战

1. 项目概述在微服务架构盛行的当下,系统间的调用关系变得异常复杂。记得去年我们团队排查一个订单超时问题,花了整整三天时间才定位到是支付服务到风控服务的gRPC调用出现了偶发性阻塞。这种场景下,分布式链路追踪技术就像给系统装上了X光机…

阅读更多 →
uutils coreutils 中 shuf 的基准测试指南:方法、命令与底层实现剖析 2026/9/12 4:44:06

uutils coreutils 中 shuf 的基准测试指南:方法、命令与底层实现剖析

uutils coreutils 中 shuf 的基准测试指南:方法、命令与底层实现剖析 【免费下载链接】coreutils Cross-platform Rust rewrite of the GNU coreutils 项目地址: https://gitcode.com/GitHub_Trending/co/coreutils shuf 从表面看是一个"把输入随机打乱…

阅读更多 →
无人机三维路径规划:多目标遗传算法MATLAB实现 2026/9/12 4:44:06

无人机三维路径规划:多目标遗传算法MATLAB实现

1. 项目概述:当无人机遇上多目标遗传算法去年参与某山区物资运输项目时,我遇到了一个典型的三维路径规划难题——需要在复杂地形中为无人机舰队规划兼顾安全性、能耗和时效性的飞行路线。传统A*算法在二维平面表现尚可,但面对三维空间中的多约…

阅读更多 →
深入解析JavaScript闭包:原理与应用 2026/9/12 4:44:06

深入解析JavaScript闭包:原理与应用

1. JavaScript闭包的核心概念解析闭包是JavaScript中最强大也最容易让人困惑的特性之一。简单来说,闭包就是一个函数能够记住并访问它所在的词法作用域,即使这个函数在其词法作用域之外执行。这种特性让JavaScript拥有了许多独特的编程模式。1.1 闭包的基…

阅读更多 →
SpringBoot美食分享系统开发实战 2026/9/12 4:44:06

SpringBoot美食分享系统开发实战

1. 项目概述这个基于SpringBoot和Java的地方特色美食分享管理系统,本质上是一个垂直领域的社区论坛平台。我花了三个月时间从零开发完成,核心目标是解决美食爱好者"找不到正宗地方特色店"和"探店经验无法沉淀"两大痛点。系统采用经典…

阅读更多 →
遗传算法优化微电网调度的MATLAB实现 2026/9/12 4:41:06

遗传算法优化微电网调度的MATLAB实现

1. 项目概述:微电网调度与遗传算法的完美结合微电网作为分布式能源系统的重要形态,正在全球范围内快速发展。它能够整合风电、光伏等可再生能源,配合蓄电池和微型燃气轮机等可控电源,形成一个自给自足的电力供应单元。我从事微电网…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞