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
I’m aware of 2 such projects, are there others?
git: GitHub - team-alembic/realworld: A fullstack Phoenix LiveView application with back...
New
Hi all,
I’m working on a Phoenix project where I need to make external HTTP requests and I’m trying to choose between Req and HTTPoison....
New
How do I tell Hologram not to escape HTML when substituting into templates?
{Textile.render(@product.long_description)}
escapes the HTM...
New
I’d like to create a file with 600 permissions (rw-------), but there’s a race condition if I create it and then change the permissions. ...
New
Hi,
we run different LLM models across a cluster, with each node loading a configurable subset. Model-specific queues let nodes consume ...
New
When I use Mix.install with a git dependency, using git@github.com:... how do I change the SSH identity used?
I’ve got two Github accoun...
New
Other Trending Topics
Hey there,
I haven’t seen a list of useful Elixir specific skills for the popular AI tools yet so I’m starting one here with my first.
...
New
Hi everyone :waving_hand:
I wanted to share something I’ve been building — NowBlind, a random chat app designed to help people discover ...
New
I fully migrated to my own harness from Anthropic/Gemini and I think it’s time to share it. Welcome DSH, the DeepSeek Harness, fully writ...
New
Hey. Is there anyone here who creates agents in their apps? Not talking about using agents, but creating them. I’m finding it pretty diff...
New
(I just needed to vent somewhere and LinkedIn is full of hope, or hype, I’m not sure which exactly)
AI dream has many faces, but general...
New
Localize is the next generation localisation library for Elixir. Think of it as ex_cldr version 3.0. The first version will be released ...
New
Categories:
Sub Categories:
Forums
Popular Tags
- #ecto
- #liveview
- #troubleshooting
- #learning-elixir
- #library
- #deployment
- #erlang
- #testing
- #genserver
- #mix
- #absinthe
- #remote-other
- #otp
- #plug
- #how-to-question
- #macros
- #postgres
- #elixirconf
- #channels
- #exunit
- #code-sync
- #discussion
- #podcasts
- #javascript
- #onsite
- #dialyzer
- #docker
- #authentication
- #ai
- #umbrella
- #full-time-contract
- #podcasts-by-brainlid
- #blog-post
- #elixirconf-us
- #ecto-query
- #elixir-ls
- #phoenix_html
- #iex
- #graphql
- #genstage
- #websockets
- #supervisor
- #advent-of-code
- #distillery
- #elixirconf-eu
- #processes
- #security
- #api
- #forms
- #performance










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