Comments (6)
@nesquena Sure, I'd love to help you guys with an admin panel.
I don't know if it's smart to try to try to model the Resque/Sidekiq admin panels too closely though.
Since those tools use Redis, it's a little easier to have query functionality, since the web client can just read from the same keys as the worker processes.
Beanstalkd is more of a pure work queue, you can only really query with the peek commands.
I'm a little scared about reserving jobs for display purposes, because it could affect the ordering or the processing speed (one of beanstalkd's big advantages). For example, if you reserve the first 100 jobs from a queue, the 101st job might be processed first by a worker, even if the 100 jobs are immediately released. This might be less of a problem for a buried job queues, since those already failed.
I was experimenting in beanstalkd_view of trying to peek jobs by id ranges (based on guessing a range from the id returned by peek-ready). But that's still kind of wonky.
I kind of like what this client is doing:
https://github.com/ptrofimov/beanstalk_console
I think the focus of the admin interface functionality should try to lean in the directions that beanstalkd does best.
Perhaps instead we could just display a big status table of all the backburner job queues with the queue statistics and in-depth details of the peek-ready job. (This could auto-refresh through javascript to give the users a sense of the internal processing.)
With a slick error interface -- having access to all the ready jobs might not be that necessary of a feature. I know I'm usually more interested in just the fact that the system is churning through jobs and only digging into the details of the jobs that fail or need to be retried.
Let me know what you think. Maybe @kr has some thoughts on good methods to query the state of beanstalkd jobs for administration?
from backburner.
Yeah I can see what you mean. Seeing a bird's eye view of the backburner work queues and seeing how many jobs, other stats etc is definitely a great overview. And being able to explore buried jobs and inspect / kick those would definitely be more important then viewing ready jobs for sure.
I would love your help putting together the first admin interface for backburner and definitely appreciate your feedback on how to make an admin panel that best fits with beanstalkd's strengths.
from backburner.
I think it's fine to reserve and release a bunch of jobs just
so you can display them. If you have more than one worker,
they're not guaranteed to run in order anyway.
from backburner.
Good point, by design the order of the jobs processed really shouldn't have any impact.
from backburner.
Yeah, I guess that's true. It's more a theoretical issue than a practical one.
When I get a chance, I'll see about creating a fork/branch with a basic skeleton/prototype.
from backburner.
Sounds great, thanks @denniskuczynski
from backburner.
Related Issues (20)
- undefined method `tubes' for Backburner::Connection
- Queue settings aren't inherited from superclass
- Support retrying jobs without logging an exception HOT 1
- Job remains reserved when before_perform hook returns false
- Incompatible with foreman? HOT 2
- Possible to process jobs not enqueued with Backburner? HOT 1
- Travis builds failing HOT 4
- concurrent-ruby restrictive dependency HOT 2
- New release? HOT 1
- Datadog monitoring hooks
- Implement unix socket url
- ActiveJob based of backburner is restarting the job within HOT 2
- Difference with BeanEater HOT 1
- ThreadsOnFork not taking any job with a thread_number of 1 HOT 2
- Upgrading Beaneater to 1.1 makes job queues fail HOT 3
- Hook documentation is misleading about the ability to bury a job HOT 1
- NoMethodError (undefined method `queue_max_job_retries' for TestJob:Class) HOT 3
- Alternative ways to make workers work HOT 1
- Exception NoMethodError -> undefined method `ttr' for nil:NilClass HOT 1
- Replacing File.exists? with File.exist? as the former has been removed from ruby 2.7.7 HOT 7
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from backburner.