travisf
I’m curious about the differences between enqueue_in and enqueue_at, the Exq docs aren’t too clear on this.
Trending in Questions
Hello!
Suppose you are building workflow (order / task / payment) processing system with the following requirements:
Each workflow con...
New
Hey guys,
I’ve got a huge CSV ( around 10 GB ) that needs to be processed hourly
Do you guys have any suggestions what is the best prac...
New
Hello!
Could someone please give me a help/sample code, how to delete a file from s3 using waffle/waffle_ecto from Phoenix app.
I creat...
New
I have what I’ve heard referred to as a “lookup table” in my database. This is a way of assigning codes to common values. One common lo...
New
Hello,
I’m developing a online persistent chat system (what’s app) like using elixir/dynamodb/aws for a mobile app(flutter).
The diffic...
New
What approach to take when sending live updates to “random” users Hi! I have a question, I have a little chat app, and when I create a DM...
New
Anyone here using Honeybadger?
My Honeybadger account is being overwhelmed with noise from some bots. Seeing a lot of
Bandit.HTTPError...
New
Other Trending Topics
Hobbes is a low-level distributed database for the Elixir programming language.
Hobbes provides a simple, safe, and scalable storage lay...
New
ExRatatui lets you cook up rich terminal UIs in Elixir, powered by Rust’s ratatui via Rustler NIFs. Build interactive terminal applicatio...
New
Hello everyone. After busy few months I am happy to announce v0.1.0 of Emerge & Solve.
They are GUI (Emerge) and State management (S...
New
Corex is an accessible, unstyled UI component library for Phoenix that integrates Zag.js state machines using Vanilla JavaScript and Live...
New
There are three potential reasons for members of this forum to have a look at https://vutuv.de
You are tired or annoyed of LinkedIn.
Yo...
New
Aludel - LLM Evaluation Workbench
Aludel is an embeddable Phoenix LiveView dashboard for evaluating and comparing LLM prompts across mult...
New
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
- #elixirconf
- #channels
- #exunit
- #discussion
- #code-sync
- #javascript
- #podcasts
- #onsite
- #dialyzer
- #docker
- #authentication
- #umbrella
- #full-time-contract
- #podcasts-by-brainlid
- #ecto-query
- #elixir-ls
- #blog-post
- #ai
- #elixirconf-us
- #phoenix_html
- #iex
- #graphql
- #genstage
- #websockets
- #supervisor
- #advent-of-code
- #distillery
- #processes
- #api
- #forms
- #hex
- #security
- #metaprogramming










Showing Posts 1 to 6- Show Best Posts
- Show All (oldest first)
- Show All (newest first)
benwilson512
I believe
enqueue_at: timemeans "enqueue this job to run at a specific timetime.enqueue_in: intervalwould mean “enqueue to runintervalseconds into the future from now”.travisf
That makes sense, and in both instances will the job run at the set time/interval or will it await until the worker is free? IE Would it take precedence over other running jobs?
I ask because I have an order processing worker which runs jobs at five minute intervals, however some jobs should only be run once or twice a day (at set times ie.
enqueue_at: time) but I noticed that when we got to that time of day the system was getting super bogged down to the point where the workers were just failing completely. I had to actually flush and restart the Redis queue after rolling back to get jobs processing again.So, I’m wondering if there is a way to say “run this job anytime you can after a specific time”.
benwilson512
I don’t use
Exqmyself, but the general way these queueing systems is that the job becomes available to a worker at the set time, but then it does still require that there is a worker free to fetch it.That basically is how it works. At the time, the job becomes available, and it’ll be processed when a worker is free. How many jobs are you trying to handle?
travisf
That’s a difficult question, I also don’t generally use Exq, I just have one project I maintain that uses it. From what I can tell in the config the
concurrencyis set to 3 and then job queues each have their own concurrent values set (max is 3). So I’m not sure if we’d be handling 3 jobs at once or 11 (sum of all concurrencies per queue). When a lot is going on the queues sometimes get up to 2,000 or 3,000 jobs anything more than that tends to happen only when a worker has stopped.benwilson512
I’m not entirely sure how concurrency works with Exq either. How long does each job take to run? 3k jobs in the queue is quite a lot, what kind of jobs are these?
ananthakumaran
It works exactly as you described. Enqueue_in/at puts the job in a ZSET with scheduled time as the score. When the current time is > the scheduled time, exq will push the job to the end of the queue. The exact time of execution depends on how many jobs are pending in the queue.
Concurrency is handled per queue, the global config is just a fallback value to be used if you don’t specify per queue concurrency.
it would be the later