Spaces:
Paused
Paused
Liam Dyer
feat: allow disabling metrics server, consolidate exit handlers (#1201)
dc1fb76
unverified
| // Shouldn't be needed if we dove into sveltekit internals, see https://github.com/huggingface/chat-ui/pull/88#issuecomment-1523173850 | |
| import { logger } from "$lib/server/logger"; | |
| import { collections } from "$lib/server/database"; | |
| import { onExit } from "./exitHandler"; | |
| export class AbortedGenerations { | |
| private static instance: AbortedGenerations; | |
| private abortedGenerations: Map<string, Date> = new Map(); | |
| private constructor() { | |
| const interval = setInterval(this.updateList, 1000); | |
| onExit(() => clearInterval(interval)); | |
| } | |
| public static getInstance(): AbortedGenerations { | |
| if (!AbortedGenerations.instance) { | |
| AbortedGenerations.instance = new AbortedGenerations(); | |
| } | |
| return AbortedGenerations.instance; | |
| } | |
| public getList(): Map<string, Date> { | |
| return this.abortedGenerations; | |
| } | |
| private async updateList() { | |
| try { | |
| const aborts = await collections.abortedGenerations.find({}).sort({ createdAt: 1 }).toArray(); | |
| this.abortedGenerations = new Map( | |
| aborts.map(({ conversationId, createdAt }) => [conversationId.toString(), createdAt]) | |
| ); | |
| } catch (err) { | |
| logger.error(err); | |
| } | |
| } | |
| } | |