OrontaMedu
Does Oban have interface for retrieving information about the jobs?
I want to let the user run customly, statically predefined set of tasks from a web page, as well as view their states, results, possibly errors, arguments, when they were or will be executed…
A task might look like this:
defmodule MyTask1 do
def run (args) do
end
end
defmodule MyTask2 do
def run (args) do
end
end
defmodule MyTask3 do
def run (args) do
end
end
On a page “new task” I’d then show the user a dropdown with MyTask1, ...3 and a button “run”. And on a page “list user’s tasks”, I’ll show him all the tasks created by HIM: the likes of their statuses, buttons to manage them (terminate, for instance), inserted_at, result…
Think of them as “spider tasks” – for site1, site2, site3…
“download tasks” – for youtube, vimeo, vk…
or anything similar.
Let’s say, I planed to use Oban to power this. I’d then also need almost all the information that Oban keeps in the oban_jobs table – to show the user on a page. Additioanally, I’d need to be able to retrieve only the jobs of a particular user rather than all ones in the table.
Does Oban have interface for retrieving the information about the jobs at all? If so, how would I do this?
Otherwise, what would be a way to retrieve it? By SQL, directly from the table?
Marked As Solved
benwilson512
Yea I think that’s a great idea. This way you can also delete the actual oban job after a while (via the pruner) to keep that table small and performant. I’d make sure to denormalize any data you want to keep for the long term in your user_jobs table.
Also Liked
benwilson512
Hey @OrontaMedu at a high level you can simply Oban.Job |> Repo.get(job_id) and query voila, you’ve got all of the relevant information.
That said, if you find yourself needing to modify the oban_jobs table to do things like store a user_id I would strongly suggest doing your own modeling around users and tasks, and then having those track which oban jobs are relevant. The oban_jobs table can see a lot of load and it is not optimal to use as both a canonical store of user related information AND a job queue.
OrontaMedu
I’ll create my own table – user_jobs (some_fields, ......., user_id, oban_job_id)
Popular in Questions
Other popular topics
Categories:
Sub Categories:
Forums
Popular Tags
- #ecto
- #liveview
- #troubleshooting
- #learning-elixir
- #deployment
- #library
- #erlang
- #testing
- #genserver
- #mix
- #absinthe
- #remote-other
- #otp
- #plug
- #how-to-question
- #macros
- #postgres
- #channels
- #elixirconf
- #exunit
- #discussion
- #code-sync
- #javascript
- #podcasts
- #onsite
- #dialyzer
- #docker
- #authentication
- #umbrella
- #full-time-contract
- #podcasts-by-brainlid
- #ecto-query
- #elixir-ls
- #phoenix_html
- #iex
- #blog-post
- #graphql
- #genstage
- #ai
- #websockets
- #supervisor
- #advent-of-code
- #elixirconf-us
- #distillery
- #processes
- #forms
- #api
- #metaprogramming
- #security
- #performance









