lennart

lennart

Hello dear Elixir enthusiasts,

excuse my possible nooby coding, i’m new to the elixir/erlang world.

I’m currently trying to setup an application which will send monthly/daily reports via email.
I managed to get the part working where an email gets send etc. but i failed to setup a scheduler which performs a task to send the email periodically or at a specific date.
I tried it with quantum because it was the most recommended!
Because it did not work inside my existing application i tried to set quantum up from scratch on a fresh native elixir project by following this documentation hexdocs.pm/quantum/, naming it
:quantum_example

This is the code i used (it looks nearly like the one of the documentation):
the deps part of mix.exs:

defp deps do
    [
        {:quantum, "~> 3.0"}
      # {:dep_from_hexpm, "~> 0.3.0"},
      # {:dep_from_git, git: "https://github.com/elixir-lang/my_dep.git", tag: "0.1.0"}
    ]
  end

The scheduler:

defmodule QuantumExample.Scheduler do
  use Quantum, otp_app: :quantum_example
end

The application’s supervision tree:

defmodule QuantumExample.Application do
  use Application

  def start(_type, _args) do
    import Supervisor.Spec, warn: false

    children = [
      QuantumExample.Scheduler
    ]

    opts = [strategy: :one_for_one, name: Quantum.Supervisor]
    Supervisor.start_link(children, opts)
  end
end

And to test its functionality i set up this config with IO.puts stuff to see if it is doing where i want it to do it:

import Config

config :logger, level: :debug

config :quantum_example, QuantumExample.Scheduler,
  jobs: [
    {"@secondly",       fn -> IO.puts("this is a secondly testoutput!") end},
    {"@minutely",       fn -> IO.puts("this is a minutely testoutput!") end},
  ]

My Problem is that it does not even do anything at all. the quantum_example application starts (iex -S mix or mix run --no-halt) without any error but neither every second nor every minute i get an IO.puts output. Not even the logger gives something. Not even saying a job got added or startet or failed.
I am sure I just failed to do the configuration properly. It feels like quantum does not even get started..
Btw I am on Elixir 1.10 and used quantum 3.0.
I appreciate any form of advise what to try out or where I took a wrong turn!
Thanks in advance everybody (:

Showing Posts 1 to 4

kokolegorille

kokolegorille

Hello and welcome,
Well, it looks good, I reproduced it by just copy/paste your topic and it worked.

18:21:27.891 [debug] [:nonode@nohost][Elixir.Quantum.Executor] Task for job #Reference<0.1224732984.3074162690.196567> started on node nonode@nohost
this is a secondly testoutput!

Did You create the project with --sup?
Do You have a /config/config.exs, with name ending with .exs?

lennart

lennart OP

Wow, thanks for your fast reply!
well no i did not generate it with --sup. But i tried it with --sup and now it works for me too! thank u so much!
My question now is: is there a way to generate the otp app skeleton in my existing project? or do i have to create a new project and feed it with all my existing modules?

hauleth

hauleth

In your mix.exs in your application/0 function you need to have mod: {QuantumExample.Application, []}. So your mix.exs will look something like:

defmodule QuantumExample.Mixproject do
  # …

  def application do
    [
      mod: {QuantumExample.Application, []}
    ]
  end

  # …
end
kokolegorille

kokolegorille

Is it an umbrella project?

If yes it will be easy, if not You can package into a module, and add to dependencies…

Or just copy file, and configure accordingly.

— 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
RemyXRenard
I’m seeing that a list inside a Kino.DataTable will be interpreted as a charlist, even if the Kino.configure() is set to charlists: :as_l...
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
brecabral
Documentation While reading the Scoped Routes section, I noticed that the documentation currently refers to a problem without explainin...
New
samoloth
Hi, I’ve just set up an application with ash_authentication. There is only magic link strategy for now, so there is no confirmation add o...
New
FlyingNoodle
If a change or preparation module uses Ash.Changeset.get_argument/2 or Ash.Query.get_argument/2 (or any of the other get_argument functio...
New

Other Trending Topics Top

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
jimsynz
Beam Bots (or just BB for short) is a framework for building fault-tolerant robotics applications in Elixir using familiar OTP patterns. ...
New
Dmk
Xamal is a deployment tool for Elixir apps that deploys native releases to bare metal servers over SSH. It’s a port of GitHub - basecamp/...
New
netoum
Corex is an accessible, unstyled UI component library for Phoenix that integrates Zag.js state machines using Vanilla JavaScript and Live...
New
webofbits
With AI doing more of the implementation work, I’ve been wondering how much coding I should deliberately keep doing myself. My main conc...
#ai
New

We're in Beta

About us Mission Statement

Options

Thread Display Mode




Thread Preview

Skip Thread Previews