TTeamDesk 学习手册

src/server/jobs/health.ts

此代码来自构建时的仓库快照。修改源码后重新构建即可更新。

ts
import { createRedis } from './queue';
import { hasHeartbeat } from './heartbeat';
export async function queueHealth(scope?: string) {
  const redis = createRedis(false);
  let timer!: ReturnType<typeof setTimeout>;
  try {
    // 上限包含连接与读取两段:Redis ready 后不再响应,也不能挂住页面查询。
    return await Promise.race([
      (async () => {
        await new Promise<void>((resolve, reject) => {
          redis.once('ready', resolve);
          redis.once('error', reject);
        });
        return { redis: true, worker: await hasHeartbeat(redis, scope) };
      })(),
      new Promise<never>((_, reject) => {
        timer = setTimeout(() => reject(new Error('健康查询超时')), 2000);
      }),
    ]);
  } catch {
    return { redis: false, worker: false };
  } finally {
    clearTimeout(timer);
    redis.disconnect();
  }
}

搜索教程

输入关键词,搜索全部章节。

阅读设置

外观
正文字号

从一张工单出发,读懂数据如何流转。

设置与进度仅保存在当前浏览器。