goworker
Infrastructure
background job worker
SHOW HN2013
How HN took it
6 positive, 17 neutral or asking, 0 mixed, 1 critical, out of 24 comments about the project. Thread score +0.18.
Idea: 5 for, 0 againstPerformance: 1 for, 1 against
The thread, comment by comment
Each row is a top-level comment and its replies, in HN's order. Select a cell to open that comment on HN.
positive neutral or mixed critical about another commenter or something else the maker
What HN said
What people liked
Useful for speeding up Ruby background jobs with Go workers
From 2 comments
In my side-project, which is my first foray into Rails, I use a Resque background worker to do processing and it takes a significant amount of time. As I've heard more about Go,…
kohanz on HNVery cool - I just interviewed with a company that is using Sidekiq to process up to millions of jobs (at about 2/sec per worker) and I asked them to look into using Go for…
atonse on HN
Cheap concurrency allows very many workers
From 2 comments
Even though most of the time is spent on I/O, goworker can get wins from its super cheap concurrency. I was able to run 100,000 workers on my single 4GB RAM laptop.
benmanns on HNThey are typically 10x faster in "raw" speed and 100x faster for concurrency. However, since Go's goroutines take almost no memory, you can run over 1,000 workers in the same…
benmanns on HN
Objections
Workers must be written in Go, so Ruby code can't move over easily
From 2 comments
I took a look, and am a little confused. Does the code for the workers need to be written in Go, not Ruby? Have you also tested the performance of this with 40-50 workers doing…
AznHisoka on HNinterested in your findings regarding goworker, so the worker logic has to be written in go correct? for my rails app if its something simple like sending email, I can use that,…
mikeni on HN
Speed gains in the queue overhead matter little when real work dominates
From 2 comments
> For simple dequeuing, deserialization, execution, and updating stats (as with the Hello worker above), goworker is 80x faster than Resque and 23x faster than Sidekiq. In real…
jrochkind1 on HNYup. I have distributed worker system with all the workers in PHP. The majority of the time spent is waiting on database requests and external HTTP calls. Even if the speed of…
meritt on HN
Rewriting things in many languages creates noise
From 1 comment
You also forget the competition from Javascript as well. Rewrite all of the things in all of the languages. I'd much rather see neat algorithms and libraries being re-written in…
agentultra on HN
Requests
Support RQ message format compatibility
From 1 comment
Would be awesome to have RQ compatibility too ;-) http://python-rq.org
sylvinus on HN
Full Sidekiq compatibility including scheduling and retries
From 1 comment
That's really cool. Where are you using it in production? Full Sidekiq compatibility (scheduling, retries) was my next goal.
benmanns on HN
Better graph labels and charts
From 2 comments
Please label your graphs. X-axis, Y-axis and title :)
hmottestad on HNA nice log graph would be better than the linear ones IMO, especially when the scale stretches a lot (like in the Database Insert tab)
g5pw on HN
Questions
How to handle Heroku SIGTERM and lost jobs
From 2 comments
How do you handle when Heroku sends a SIGTERM to kill your process? I couldn't find a way to preempt running workers, so everything running on Heroku has to finish within 10…
benmanns on HNHey Ben, Author of go-workers here. On SIGTERM, I stop accepting new work, and wait for all running workers to finish before halting. If workers take longer than the 10 seconds…
jrallison on HN
How to write integration tests across Rails and goworker
From 2 comments
How would you write integration tests if you had a rails app that pushed jobs out to goworker? Say a user clicks a link that creates an async job that does a API call somewhere.…
joevandyk on HNThe test should use redis though, to test the whole stack. Same question goes for any time of queue system, like quque_classic, which stores the jobs in a postgresql table.
joevandyk on HN
Whether ActiveRecord-dependent jobs can run in Go
From 2 comments
That looks great, congrats. I suppose the main use case is working on data loosely coupled with web app, thus ? For example, if we have to do any big processing on active_record…
oelmekki on HNinterested in your findings regarding goworker, so the worker logic has to be written in go correct? for my rails app if its something simple like sending email, I can use that,…
mikeni on HN
Alternatives named
Sidekiq
From 2 comments
This is a weekend project I started on as a way to learn Go that I quickly realized would be something worth sharing. It lets you queue jobs from Rails that are processed in Go,…
benmanns on HNI took a look, and am a little confused. Does the code for the workers need to be written in Go, not Ruby? Have you also tested the performance of this with 40-50 workers doing…
AznHisoka on HN
go-workers
From 1 comment
Interestingly there is a Sidekiq compatible job queue written in Go that has a similar name: go-workers https://github.com/jrallison/go-workers Wondering how these ruby/rails…
jemeshsu on HN
Jesque
From 1 comment
There is Java implementation of Resque as well: https://github.com/gresrun/jesque I've been using jesque to consume Resque tasks with no problems, and performance is great.
adefa on HN
gokiq
From 1 comment
I have a similar project that we use in production; a Sidekiq clone in Go: https://github.com/cupcake/gokiq I should really document it. It has full type safety, stats, scheduled…
Titanous on HN
NSQ
From 2 comments
Interestingly there is a Sidekiq compatible job queue written in Go that has a similar name: go-workers https://github.com/jrallison/go-workers Wondering how these ruby/rails…
jemeshsu on HNWe're in the midst of switching from quite a large sidekiq deployment to inbound work being done in NSQ. At a high level, NSQ allows for different strategies like fanout (having…
rargulati on HN