[{"data":1,"prerenderedAt":323},["ShallowReactive",2],{"project-7017580":3},{"id":4,"name":5,"line":6,"line_source":7,"title":8,"url":9,"domain":10,"maker":11,"posted_at":12,"year":13,"points":14,"comments":15,"rank_in_year":16,"shown_in_year":17,"top":18,"tier":19,"category":20,"subcategory":21,"format":22,"keywords":23,"reception":28,"sentiment":29,"stance_mix":30,"scored_comments":35,"aspects":36,"strip":42,"post_text":45,"what":46,"said":92,"maker_in_thread":189,"shape":195,"grid":198,"attempts":286,"same_week":287,"maker_shows":43,"maker_hidden":315,"reader_version":316,"card":317},"7017580","Sneakers","Fast background processing for Ruby","title","Show HN: Sneakers – Fast background processing for Ruby","http:\u002F\u002Fsneakers.io","sneakers.io","jondot",1389106535,2014,114,37,246,2272,11,"notable","infrastructure","background job processing","library",[24,25,26,27],"ruby background jobs","rabbitmq","sidekiq alternative","job queue","curious",0.182,{"positive":31,"neutral":32,"mixed":33,"critical":34},4,12,0,2,18,{"design":37,"idea":39,"performance":40,"docs":41},{"positive":33,"critical":38},1,{"positive":34,"critical":33},{"positive":33,"critical":38},{"positive":38,"critical":33},[33,43,33,43,33,38,33,33,43,44,33,33,43,38,33,43,33,33,33,33,33,33,33,43,44,33,44,33,43,33,43,33,43,43,43,43,44],3,5,null,{"problem":47,"audience":60,"pricing":45,"motivation":65,"time_to_build":45,"stack":71,"openness":90,"stage":91,"team_size":90},{"value":48,"source":49,"evidence":50},"Background job processing that avoids the broker bottleneck of Redis-based Ruby frameworks","maker",[51,54,57],{"id":52,"by":11,"text":53},"7017674","Author here - Hi! :) Sneakers is a high-performance background-job processing framework based on RabbitMQ. It uses a hybrid process-thread model where many processes are spawned…",{"id":55,"by":11,"text":56},"7018198","Not hard because most things are abstracted (though - there's a trade off between too much abstraction and peformance). But I feel it might be missing the point, RabbitMQ was…",{"id":58,"by":11,"text":59},"7019013","More or less the same. Plus it will use all cores on MRI, so you can keep using gems with C-Extensions (i.e. you don't have to run rbx or JRuby to max all cores). Discussing…",{"value":61,"source":62,"evidence":63},"Ruby developers running background jobs and messaging","inferred",[64],{"id":58,"by":11,"text":59},{"value":66,"source":49,"evidence":67},"Celluloid and Sidekiq's Redis coupling blocked wanted process and thread model, so maker reimplemented it",[68],{"id":69,"by":11,"text":70},"7017798","Yes. I dislike reinventing the wheel, I actually bumped my head against making Sidekiq use a different backend. Three problems - one - it is too tightly coupled to Redis.…",[72,76,80,84],{"value":73,"source":49,"evidence":74},"Ruby",[75],{"id":52,"by":11,"text":53},{"value":77,"source":49,"evidence":78},"RabbitMQ",[79],{"id":52,"by":11,"text":53},{"value":81,"source":49,"evidence":82},"serverengine",[83],{"id":69,"by":11,"text":70},{"value":85,"source":49,"evidence":86},"bunny",[87],{"id":88,"by":11,"text":89},"7018969","I can definitely say that RabbitMQ (and the awesome bunny ruby library) is doing the heavy lifting. Batch handling - is actually \"prefetch\" in RabbitMQ\u002FAMQP. Error reporting -…","unknown","launched",{"praise":93,"objections":106,"requests":118,"questions":147,"alternatives":169},[94,98],{"value":95,"source":49,"evidence":96},"Fast throughput compared to Sidekiq in microbenchmark",[97],{"id":52,"by":11,"text":53},{"value":99,"source":100,"evidence":101},"Good documentation of design rationale","commenter",[102],{"id":103,"by":104,"text":105},"7018241","danso","Kudos to the OP for a thorough Wiki\u002Fdocumentation As always, the first question on my mind is \"Why X, instead of A,B,C?\" (sidekiq in this case). The OP's page is here:…",[107,111],{"value":108,"source":49,"evidence":109},"Redis-based Sidekiq is less reliable than RabbitMQ clustering",[110],{"id":58,"by":11,"text":59},{"value":112,"source":100,"evidence":113},"Redis clustering not production-ready",[114],{"id":115,"by":116,"text":117},"7019381","druiid","Still in beta\u002Falpha as far as I last checked (we've been waiting for it). Additionally as far as clustering is concerned there still seem to be a lot of 'unknowns' for me with…",[119,130,137],{"value":120,"source":100,"evidence":121},"Pluggable backends such as PostgreSQL",[122,126],{"id":123,"by":124,"text":125},"7017781","judofyr","Have you considered pluggable backends (with a Sidekiq\u002FResque\u002FRediss backend) so you can easily upgrade a Sidekiq stack to Sneakers?",{"id":127,"by":128,"text":129},"7017963","joevandyk","How hard would it be to use a PostgreSQL backend with sneakers?",{"value":131,"source":100,"evidence":132},"Batch job support",[133],{"id":134,"by":135,"text":136},"7020081","knes","Wow, just finished deploying a rails app that needs a lot of scrapers with sidekiq and it was a great process but sneakers looks very nice! Is batches of job on the roadmap?…",{"value":138,"source":100,"evidence":139},"Web UI like Sidekiq's",[140,144],{"id":141,"by":142,"text":143},"7018793","bdcravens","Look forward to checking this out. The biggest win regarding Sidekiq for me wasn't so much performance (which is was definitely better than Resque) but it's retry logic, error…",{"id":145,"by":142,"text":146},"7019189","The thing about Sidekiq is the management is closer to my app, but I'd of course need to look into Rabbit's UI before making any decisions. I suspect that if this project takes…",[148,155,162],{"value":149,"source":100,"evidence":150},"How does it compare to Celery and support result return",[151],{"id":152,"by":153,"text":154},"7021281","nat","I have more of a django background, so I've never used any of the libraries that you compare this to. How does Sneakers compare to something like Celery…",{"value":156,"source":100,"evidence":157},"How to deploy and monitor RabbitMQ and workers",[158],{"id":159,"by":160,"text":161},"7020731","callmeed","I'm a big sidekiq fan but you've got my interest piqued ... aside from the nice approach to retries\u002Ffailures, the best thing about sidekiq for me is ease of production…",{"value":163,"source":100,"evidence":164},"How to return job completion status to frontend",[165],{"id":166,"by":167,"text":168},"7020910","jeffblake","My biggest obstacle with Sidekiq is communicating back to the frontend client when jobs are done (i.e. credit card processed, FacebookGraph friends cached, etc). Right now I use…",[170,178,185],{"value":171,"source":100,"evidence":172},"Sidekiq",[173,177],{"id":174,"by":175,"text":176},"7017807","avitzurel","I have been using Sidekiq in production for over a year now, running over 11B jobs over that year, peaking around 20m jobs per day. I've been wanting to migrate away from it to…",{"id":141,"by":142,"text":143},{"value":179,"source":100,"evidence":180},"Resque",[181],{"id":182,"by":183,"text":184},"7018827","chadcf","Sidekiq's retry and robust handling of jobs (at least with reliable queuing in pro) was the big win indeed. I had a app I tried switching over to it though and it did not go…",{"value":186,"source":100,"evidence":187},"Celluloid",[188],{"id":69,"by":11,"text":70},{"comments":32,"answered":190,"key":191},7,[192,193,194],{"id":52,"text":53},{"id":69,"text":70},{"id":55,"text":56},{"commenters":196,"max_depth":190,"maker_replies":32,"first_comment_mins":197,"lifespan_hours":18},20,17,[199,201,203,205,206,207,210,212,216,219,221,224,226,228,230,234,237,238,241,243,245,248,252,254,255,257,259,261,263,266,268,273,276,277,279,281,283],[52,33,33,200,11,38],"project\u002Fpositive\u002Fperformance",[123,33,43,202,124,33],"project\u002Fneutral\u002Fdesign",[69,33,33,204,11,38],"maker\u002Fneutral\u002Fdesign",[127,33,43,202,128,33],[55,33,33,202,11,38],[208,33,38,209,128,33],"7019125","project\u002Fcritical\u002Fdesign",[211,33,33,202,11,38],"7019643",[213,33,33,214,215,33],"7020594","other\u002Fneutral\u002Fdesign","zimbatm",[217,33,43,202,218,33],"7018209","artellectual",[174,38,44,220,175,33],"project\u002Fpositive\u002Fidea",[222,38,33,223,11,38],"7017817","commenter\u002Fneutral\u002Fnone",[225,38,33,223,175,33],"7017845",[141,34,43,227,142,33],"project\u002Fneutral\u002Fidea",[182,34,38,229,183,33],"project\u002Fcritical\u002Fperformance",[231,34,33,232,233,33],"7018854","commenter\u002Fneutral\u002Fperformance","djur",[235,34,43,236,142,33],"7018896","project\u002Fneutral\u002Fperformance",[58,34,33,220,11,38],[239,34,33,223,240,33],"7019330","MoOmer",[115,34,33,242,116,33],"commenter\u002Fcritical\u002Fnone",[244,34,33,223,11,38],"7019550",[246,34,33,223,247,33],"7019853","milkshakes",[249,34,33,250,251,33],"7020957","other\u002Fneutral\u002Fnone","steveklabnik",[88,34,33,253,11,38],"project\u002Fpositive\u002Fdesign",[145,34,43,202,142,33],[256,43,44,220,233,33],"7018273",[258,43,33,236,11,38],"7018406",[103,31,44,260,104,33],"maker\u002Fpositive\u002Fdocs",[262,31,33,260,11,38],"7018393",[264,44,43,202,265,33],"7018283","tdumitrescu",[267,44,33,202,11,38],"7018527",[269,270,43,271,272,33],"7018495",6,"project\u002Fneutral\u002Fnone","bch",[274,270,33,275,11,38],"7018528","maker\u002Fneutral\u002Fnone",[159,190,43,202,160,33],[152,278,43,227,153,33],8,[166,280,43,202,167,33],9,[134,282,43,227,135,33],10,[284,18,44,285,251,33],"7020962","project\u002Fpositive\u002Fnone",[],[288,293,297,302,307,312],{"id":289,"name":290,"points":291,"category":292},"7005348","Alpaca",268,"dev_tools",{"id":294,"name":295,"points":296,"category":292},"7023393","Codebox",136,{"id":298,"name":299,"points":300,"category":301},"7007216","weather-explorer",85,"data",{"id":303,"name":304,"points":305,"category":306},"7010000","LINQ",84,"languages",{"id":308,"name":309,"points":310,"category":311},"7000159","Lentor",69,"productivity",{"id":313,"name":314,"points":310,"category":306},"7019049","email",false,"v2",{"id":318,"name":5,"line":6,"ai":315,"cat":20,"year":13,"points":14,"comments":15,"rec":28,"s":319,"top":18,"kw":320,"maker":11,"domain":10,"tier":19,"attempts":33,"strip":321,"url":9,"mix":322,"praise":95,"objection":108,"sub":21},7017580,0.18,[24,25,26,27],"0303010035003103000000035050303033335",[31,32,33,34],1793990901300]