Is there any library for the queueing mechanism?

What’s used by the most - Cron? But a task or rather script executed by Cron won’t access to the context of an application. Meaning, a task will have be an independent unit. Whereas I want is a library to use inside a project such that it’ll have access to everything.

Anything similar to Sidekiq exist in Rust?

  • @nothingness@lemmy.worldOP
    link
    fedilink
    0
    edit-2
    2 years ago

    For my project I just run them.

    How would you “just run” a task every 30 minutes? Every 5 hours? Once a day?

    • @kevincox@lemmy.ml
      link
      fedilink
      22 years ago
      std::thread::spawn(|| {
          loop {
              std::thread::sleep(std::time::Duration::from_secs(30*60));
              do_job();
          }
      });
      

      Works pretty well. Maybe add a bit of code to crash the whole process on panic or some other logging. Wastes a few KiB of memory per loop but probably not a major issue. Doing this with async will waste only the tiniest amount of memory.

        • @kevincox@lemmy.ml
          link
          fedilink
          12 years ago

          It depends. Sometimes you can just put an exit call at the end of main to kill the thread. If you want to attempt graceful shutdown then usually I just use a boolean shutdown flag. Then the loop becomes while !shutdown.get() {

        • @kevincox@lemmy.ml
          link
          fedilink
          12 years ago

          Best option is probably to add a wrapper around the thread that re-spawns it. But you can also just catch panics in the loop.

          • @nothingness@lemmy.worldOP
            link
            fedilink
            0
            edit-2
            2 years ago

            How would you re-run it multiple times then? An internal should be progressively greater. How would you terminate it if it continues to produce an exception?