Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
530e1a3d5d
commit
195069450f
480 files changed
+15507
-24650
No files matched your search
+17
-19
@@ -1,11 +1,11 @@
|
||||
import { Worker } from "bullmq"
|
||||
import { Worker } from 'bullmq'
|
||||
|
||||
import { config } from "./config"
|
||||
import { judgeQueueName, type JudgeJobData } from "./judge/job"
|
||||
import { failAbandonedSubmission, judgeSubmission } from "./judge/run"
|
||||
import { flowchartQueueName, type FlowchartJobData } from "./flowchart/job"
|
||||
import { evaluateFlowchart } from "./flowchart/run"
|
||||
import { createBlockingRedis } from "./redis"
|
||||
import { config } from './config'
|
||||
import { judgeQueueName, type JudgeJobData } from './judge/job'
|
||||
import { failAbandonedSubmission, judgeSubmission } from './judge/run'
|
||||
import { flowchartQueueName, type FlowchartJobData } from './flowchart/job'
|
||||
import { evaluateFlowchart } from './flowchart/run'
|
||||
import { createBlockingRedis } from './redis'
|
||||
|
||||
const worker = new Worker<JudgeJobData>(judgeQueueName, async (job) => judgeSubmission(job.data), {
|
||||
connection: createBlockingRedis(),
|
||||
@@ -23,11 +23,11 @@ const flowchartWorker = new Worker<FlowchartJobData>(
|
||||
{ connection: createBlockingRedis(), concurrency: 2 },
|
||||
)
|
||||
|
||||
worker.on("ready", () => {
|
||||
worker.on('ready', () => {
|
||||
console.log(`Judge worker ready (concurrency=${config.judgeConcurrency})`)
|
||||
})
|
||||
worker.on("failed", async (job, error) => {
|
||||
console.error(`Judge job ${job?.id ?? "unknown"} failed`, error)
|
||||
worker.on('failed', async (job, error) => {
|
||||
console.error(`Judge job ${job?.id ?? 'unknown'} failed`, error)
|
||||
// 队列没配 attempts,失败即终局;worker 被杀掉那种 BullMQ 走完 stalled 重试也会
|
||||
// 落到这里。不在这里写一个终态,提交就永远停在「等待评分」,没有任何人会再管它。
|
||||
const submissionId = job?.data.submissionId
|
||||
@@ -38,14 +38,12 @@ worker.on("failed", async (job, error) => {
|
||||
console.error(`Failed to mark submission ${submissionId} as system error`, markError)
|
||||
}
|
||||
})
|
||||
worker.on("error", (error) => {
|
||||
console.error("Judge worker error", error)
|
||||
worker.on('error', (error) => {
|
||||
console.error('Judge worker error', error)
|
||||
})
|
||||
flowchartWorker.on("ready", () => console.log("Flowchart worker ready (concurrency=2)"))
|
||||
flowchartWorker.on("failed", (job, error) =>
|
||||
console.error(`Flowchart job ${job?.id ?? "unknown"} failed`, error),
|
||||
)
|
||||
flowchartWorker.on("error", (error) => console.error("Flowchart worker error", error))
|
||||
flowchartWorker.on('ready', () => console.log('Flowchart worker ready (concurrency=2)'))
|
||||
flowchartWorker.on('failed', (job, error) => console.error(`Flowchart job ${job?.id ?? 'unknown'} failed`, error))
|
||||
flowchartWorker.on('error', (error) => console.error('Flowchart worker error', error))
|
||||
|
||||
async function shutdown() {
|
||||
await worker.close()
|
||||
@@ -53,5 +51,5 @@ async function shutdown() {
|
||||
process.exit(0)
|
||||
}
|
||||
|
||||
process.on("SIGINT", shutdown)
|
||||
process.on("SIGTERM", shutdown)
|
||||
process.on('SIGINT', shutdown)
|
||||
process.on('SIGTERM', shutdown)
|
||||
Reference in new issue
Block a user