diff options
| author | Jan Tuomi <jans.tuomi@gmail.com> | 2024-03-14 22:20:38 +0200 |
|---|---|---|
| committer | Jan Tuomi <jans.tuomi@gmail.com> | 2024-03-14 22:20:38 +0200 |
| commit | 10cbbd6fa6120db38479a1be12c3ee17f80df316 (patch) | |
| tree | d9aa6680f03fc6add9f0fa3e2d3fabc824af9aa3 | |
| parent | ec6b5b361c35d7ab6038f9198d4660276af4a212 (diff) | |
Limit queue size
| -rw-r--r-- | src/index.ts | 15 | ||||
| -rw-r--r-- | src/tasks.ts | 4 |
2 files changed, 18 insertions, 1 deletions
diff --git a/src/index.ts b/src/index.ts index 329d7b6..938b5f0 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,4 +1,4 @@ -import { addTask, getTask } from "./tasks"; +import { addTask, getTask, numOfTasksInQueue } from "./tasks"; import { runDownloadInstagramTask } from "./instagram_task"; import { runWithRetries, wait } from "./utils"; import { AppOptions, App as SlackApp } from "@slack/bolt"; @@ -6,6 +6,10 @@ import fs from "fs"; import dotenv from "dotenv"; dotenv.config(); +const QUEUE_MAX_LENGTH = process.env.QUEUE_MAX_LENGTH + ? Number(process.env.QUEUE_MAX_LENGTH) + : 3; + const slackAppConfig: AppOptions = { token: process.env.SLACK_BOT_TOKEN, signingSecret: process.env.SLACK_SIGNING_SECRET, @@ -19,6 +23,15 @@ const app = new SlackApp(slackAppConfig); app.command("/veeti", async ({ command, ack, respond, client }) => { await ack(); + + if (numOfTasksInQueue() >= QUEUE_MAX_LENGTH) { + void respond({ + text: "Too many tasks in queue, please try again later.", + response_type: "ephemeral", + }); + return; + } + console.log("Received command: /veeti", command.text); const url = command.text.trim(); diff --git a/src/tasks.ts b/src/tasks.ts index 18b6fe8..1b0ce9b 100644 --- a/src/tasks.ts +++ b/src/tasks.ts @@ -12,3 +12,7 @@ export const addTask = (task: Task) => { export const getTask = (): Task | undefined => { return taskQueue.shift(); }; + +export const numOfTasksInQueue = () => { + return taskQueue.length; +}; |
