GOOGLE ADS

Montag, 25. April 2022

Node Cron: Fügen Sie eine Verzögerung von 3 Sekunden hinzu, nachdem Sie eine einzelne Aktion ausgeführt haben

Ich sende Massennachrichten stapelweise an Benutzer und verwende node-cron. Sobald die Nachricht an den Benutzer gesendet wurde, erhält er/sie die E-Mail-Benachrichtigung. Ich möchte eine Verzögerung von 3 Sekunden hinzufügen, bevor eine neue Nachricht gesendet wird.

public bulkActionHandler = async () => {
try {
const messageJobs: Array<IBulkAction> | null = await BulkAction.find({ isDeleted: 0, action: "message", isCompleted: 0 }).sort({dateCreated:1}).limit(1).exec()
if (messageJobs && messageJobs.length) {
for (let index = 0; index < messageJobs.length; index++) {
const element: IBulkAction = messageJobs[index];
if (element && element._id) {
const { error }: any = await this.messageHandler(element.data)
await BulkAction.findByIdAndUpdate({ _id: element._id }, {
isCompleted:!error? 1: 0,
status:!error? 1: 0
}).exec()
logger.info("Cron execution completed for " + element._id)
if (error) {
logger.error(JSON.stringify(error))
}
}
}
}
await BulkAction.deleteMany({isCompleted:1, status:1, dateCreated:{$lt:new Date(Date.now() - 24*60*60 * 1000)}}).exec()
} catch (error) {
logger.error(prepareErrorLog(error,'Something went wrong with bulk cron '))
}
}


Lösung des Problems

const wait = (ms: number) => new Promise(res => setTimeout(res, ms));
// add wait into your fn
await wait(3000);

Keine Kommentare:

Kommentar veröffentlichen

Warum werden SCHED_FIFO-Threads derselben physischen CPU zugewiesen, obwohl CPUs im Leerlauf verfügbar sind?

Lösung des Problems Wenn ich das richtig verstehe, versuchen Sie, SCHED_FIFO mit aktiviertem Hyperthreading ("HT") zu verwenden, ...