tutorial mac language framework español elixir phoenix-framework

elixir - mac - phoenix framework tutorial



¿Cómo puedo programar el código para que se ejecute cada pocas horas en el marco Elixir o Phoenix? (6)

Entonces, digamos que quiero enviar un montón de correos electrónicos o recrear el mapa del sitio o lo que sea cada 4 horas, ¿cómo haría eso en Phoenix o simplemente con Elixir?



Hay una alternativa simple que no requiere ninguna dependencia externa:

defmodule MyApp.Periodically do use GenServer def start_link do GenServer.start_link(__MODULE__, %{}) end def init(state) do schedule_work() # Schedule work to be performed at some point {:ok, state} end def handle_info(:work, state) do # Do the work you desire here schedule_work() # Reschedule once more {:noreply, state} end defp schedule_work() do Process.send_after(self(), :work, 2 * 60 * 60 * 1000) # In 2 hours end end

Ahora en su árbol de supervisión:

worker(MyApp.Periodically, [])


Puedes usar erlcron para eso. Lo usas como

job = {{:weekly, :thu, {2, :am}}, {:io, :fwrite, ["It''s 2 Thursday morning~n"]}} :erlcron.cron(job)

Un job es una tupla de 2 elementos. El primer elemento es una tupla que representa la programación del trabajo y el segundo elemento es la función o un MFA (Módulo, Función, Aridad). En el ejemplo anterior, ejecutamos :io.fwrite("It''s 2 Thursday morning") cada 2 de la mañana del jueves.

¡Espero que ayude!


Quantum permite crear, encontrar y eliminar trabajos en tiempo de ejecución.

Además, puede pasar argumentos a la función de tarea al crear un cronjob e incluso modificar la zona horaria si no está satisfecho con UTC:

Quantum

Si su aplicación se ejecuta como varias instancias aisladas (por ejemplo, Heroku), hay procesadores de trabajo respaldados por Redis, que también admiten la programación de tareas:

Exq: https://github.com/akira/exq

Toniq: https://github.com/joakimk/toniq

Verk: https://github.com/edgurgel/verk


Quantum biblioteca Quantum Quantum Quantum .
Siga las instrucciones a continuación.

#your_app/mix.exs defp deps do [{:quantum, ">= 1.9.1"}, #rest code end #your_app/mix.exs def application do [mod: {AppName, []}, applications: [:quantum, #rest code ]] end #your_app/config/dev.exs config :quantum, :your_app, cron: [ # Every minute "* * * * *": fn -> IO.puts("Hello QUANTUM!") end ]

Todo listo. Inicie el servidor ejecutando el siguiente comando.

iex -S mix phoenix.server


Quantum es genial, lo usamos en el trabajo como un reemplazo cron con un front-end de Phoenix y también agregamos trabajos en real-time cual es muy bueno.