goworker

Infrastructure

background job worker

SHOW HN2013

179points
58comments
#86of 1,739 in 2013
Top 5%of 2013 by points

How HN took it

LovedMost comments that take a side are positive

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 HN
    • Very 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 HN
    • They 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 HN
    • interested 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 HN
    • Yup. 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 HN
    • A 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 HN
    • Hey 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 HN
    • The 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 HN
    • interested 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 HN
    • 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 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 HN
    • We'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

Category, keywords, summaries and labels on this page were made by AI (Thread Reader v2) and not checked by hand. Each point links to the comments it came from.

Add a badge to your READMEShown on HackerShow
[![Shown on HackerShow](https://hackershow.org/badge.svg)](https://hackershow.org/show/6393048)