travisf

travisf

I’m curious about the differences between enqueue_in and enqueue_at, the Exq docs aren’t too clear on this.

Showing Posts 1 to 6

benwilson512

benwilson512

Author of Craft GraphQL APIs in Elixir with Absinthe

I believe enqueue_at: time means "enqueue this job to run at a specific time time. enqueue_in: interval would mean “enqueue to run interval seconds into the future from now”.

travisf

travisf OP

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

benwilson512

Author of Craft GraphQL APIs in Elixir with Absinthe

I don’t use Exq myself, 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

travisf OP

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 concurrency is 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

benwilson512

Author of Craft GraphQL APIs in Elixir with Absinthe

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

ananthakumaran

So, I’m wondering if there is a way to say “run this job anytime you can after a specific time”.

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.

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 concurrency is set to 3 and then job queues each have their own concurrent values set (max is 3).

Concurrency is handled per queue, the global config is just a fallback value to be used if you don’t specify per queue concurrency.

So I’m not sure if we’d be handling 3 jobs at once or 11 (sum of all concurrencies per queue)

it would be the later

— All posts loaded —

Where Next? Top

Trending in Questions Top

stjefim
Hello! Suppose you are building workflow (order / task / payment) processing system with the following requirements: Each workflow con...
New
Blokh
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
kszambelanczyk
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
Onor.io
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
jaybe78
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
Trolleger
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
matt-savvy
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 Top

garrison
Hobbes is a low-level distributed database for the Elixir programming language. Hobbes provides a simple, safe, and scalable storage lay...
New
mcass19
ExRatatui lets you cook up rich terminal UIs in Elixir, powered by Rust’s ratatui via Rustler NIFs. Build interactive terminal applicatio...
New
Damirados
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
netoum
Corex is an accessible, unstyled UI component library for Phoenix that integrates Zag.js state machines using Vanilla JavaScript and Live...
New
wintermeyer
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
webofbits
Aludel - LLM Evaluation Workbench Aludel is an embeddable Phoenix LiveView dashboard for evaluating and comparing LLM prompts across mult...
New

We're in Beta

About us Mission Statement

Options

Thread Display Mode




Thread Preview

Skip Thread Previews