Search

PythonReactSEOPDF
GitHub Skill

nestjs-scheduling

Distributed cron jobs and locking patterns.

HoangNguyen0403☆ 143 Repository stars48 Repository forks

Installation

Follow the repository instructions for this skill and your agent. Review the files and dependencies before adding it to your workflow.

View source ↗Guides

Skill instructions

Task Scheduling & Jobs

Priority: P1 (OPERATIONAL)

Background job processing and scheduled task patterns.

  • Problem: @Cron() runs on every instance. In K8s with 3 pods, your "Daily Report" runs 3 times.
  • Solution: Distributed Locking using Redis.
    • Pattern: Using a decorator to wrap the cron method.
    • Logic: SET resource_name my_random_value NX PX 30000 (Redis Atomic Set).

Cron Decorator Pattern

  • Implementation:

    @Cron(CronExpression.EVERY_MINUTE)
    @DistributedLock({ key: 'send_emails', ttl: 5000 })
    async handleCron() {
      // Only runs if lock acquired
    }
    
  • Tools: Use nestjs-redlock or custom Redis wrapper via redlock library.

Job Robustness

  • Isolation: Never perform heavy processing inside the Cron handler.
    • Pattern: Cron -> Push Job ID to Queue (BullMQ) -> Worker processes it.
    • Why: Cron schedulers can get blocked by the Event Loop; Workers are scalable.
  • Error Handling: Wrap ALL cron logic in try/catch. Uncaught exceptions in a Cron job can crash the entire Node process.

Examples

Read the usage examples in the source repository.

View source ↗

Source history

Indexed on
2026-01-20
Index updated
2026-01-26
Branch
main

Index and sync dates describe this directory. View the source repository for code history.

GitHub ↗

chat Comments (0)

chat_bubble_outline

No comments yet. Be the first to share your thoughts!