vikram7

vikram7

I currently have a task that runs once an hour. This is pretty straightforward using a GenServer. I can call Process.send_after(self(), :work, @interval) in the handle_info/2 function of that module.

If I need to run another task once every day at 8AM UTC, what would be a good way to do this natively (without any external libraries)? Is there something equivalent to Process.send_after except at a specific time?

Showing Posts 1 to 10

idi527

idi527

I would calculate the initial_interval to 8AM on init, and then send_after 24 hours every time after that.

efrenfuentes

efrenfuentes

You can check Quantum, you can config it like cron:

config :quantum, :your_app,
  cron: [
    # Every minute
    "* * * * *":      {"Heartbeat", :send},
    # Every 15 minutes
    "*/15 * * * *":   fn -> System.cmd("rm", ["/tmp/tmp_"]) end,
    # Runs on 18, 20, 22, 0, 2, 4, 6:
    "0 18-6/2 * * *": fn -> :mnesia.backup('/var/backup/mnesia') end,
    # Runs every midnight:
    "@daily":         &Backup.backup/0
  ]
davearonson

davearonson

Speaking of cron, is there some reason this task couldn’t be done through cron? (Or at least triggered by something done through cron?) Sorry if that’s “Just Not Done” in the Elixir world, I’m too new to have a good sense of that – some say I lack good sense at all… %-)

StanBright

StanBright

@davearonson, in most cases it’s a better approach to have the scheduling service/system/config as part of your app. It’s easier to deploy and manage that way.

dwahyudi

dwahyudi

I also use quantum in two of my projects. It does amazing job.

minhajuddin

minhajuddin

It is possible to use cron to schedule your jobs. The deployment story is not very good, but if you are up to using ruby, you can use GitHub - javan/whenever: Cron jobs in Ruby · GitHub to setup your job and run whenever --update-crontab. One of us should write a whenever runner for distillery.

You can use cron jobs even without using whenever for configuration updates. If you are using Distillery you could put the following in your crontab

0 0 8 1/1 * ? * /opt/www/myapp/bin/app_name rpc Elixir.ScheduledTask run

where our module is

defmodule ScheduledTask def
  def run
    # our code
  end
end
Forseth

Forseth

Quantum is fantastic using it in all my applications at the moment, never had any issues

manukall

manukall

One thing to keep in mind when using Process.send_after for something like this is that your app might get restarted in between and that message won’t get send.
You could work around that by scheduling a message again on application startup, though.

rkmax

rkmax

Did you have some example not the questum part it self, more like the way how to start that cron, example: for start the web app I run mix phoenix.server how to do that for cron like mix start-cron?

minhajuddin

minhajuddin

You are looking for mix run

~ $ mix help run 

                                    mix run                                     

Runs the given file or expression in the context of the application.

You can use this task to execute a particular file or command:

    mix run -e Hello.world
    mix run my_script.exs

This task provides a subset of the functionality available in the elixir
executable, including setting up the System.argv/0 arguments:

    mix run my_script.exs arg1 arg2 arg3

You can also use this task to simply start an application and keep it running
without halting:

    mix run --no-halt

Before running any command, the task compiles and starts the current
application. Those can be configured with the options below.

You may also pass options specific to the elixir executable as follows:

    elixir --sname hello -S mix run --no-halt

## Command line options

  • --config, -c  - loads the given configuration file
  • --eval, -e - evaluate the given code
  • --require, -r - requires pattern before running the command
  • --parallel, -p - makes all requires parallel
  • --no-compile - does not compile even if files require compilation
  • --no-deps-check - does not check dependencies
  • --no-archives-check - does not check archives
  • --no-halt - does not halt the system after running the command
  • --no-mixexs - allows the command to run even if there is no mix.exs
  • --no-start - does not start applications after compilation
  • --no-elixir-version-check - does not check the Elixir version from
    mix.exs

— All posts loaded —

Where Next? Top

Trending in Questions Top

RSP87
I’m working on a project that simulates the bumbl example in the programming phoenix book. It acts almost like an email client. We have a...
New
nseaSeb
Hello, I know there is an approach for handling lists that allows for optimized traversal, but I can’t recall the specific method (somet...
New
kpanic
Hi everyone, I am toying with the idea of building a “match maker” for giving personal help to people that wants to start coding. I sta...
New
brecabral
Documentation While reading the Scoped Routes section, I noticed that the documentation currently refers to a problem without explainin...
New
velrest
So my question is quite simple and i have found no conclusive answer on forum, google or AI. Should we use :erlang.float for Integer to ...
New
asweet-confluent
I recently noticed that Elixir’s Logger defaults its primary log level to :debug when no :logger, :level application configuration is pre...
New
apz
I’m new to elixir and just tried to install the elixirLS extension for VScode(ium) and it is throwing some errors that I would like help ...
New

Other Trending Topics Top

webofbits
Cairn is a small OTP library for message delivery, lightweight function processes, supervised work, and waiting on results. The goal is ...
New
GenericJam
Edit: 2026 May 15 - This post is archived. Mob is alive!! Main docs: mob v0.7.11 — Documentation A bit of explanation for the slightly c...
New
JesseHerrick
Hey, I’m Jesse and I’m the main contributor behind Dexter, a full-featured, lightning-fast Elixir LSP optimized for large codebases. It s...
New
mudasobwa
I am happy to introduce the very α version of the new programming language compiled to BEAM. Welcome Cure. It has literally three kille...
New
marciok
Hi there! We created Gust: A task orchestrator inspired by Airflow. For those who have never heard about Aiflow, it’s a Python-based wor...
New
mhanberg
Hi everyone! The first release candidate for the Expert language server project is now available! We’ve published a press release detai...
New

We're in Beta

About us Mission Statement

Options

Thread Display Mode




Thread Preview

Skip Thread Previews