Komrade is a message queue for your workers. Komrade will help you manage background jobs for web applications.
HTTP based queueing service.
- PUT Job
- POST Job's Heartbeat
- PUT Job Failure
- GET Jobs
| package main | |
| import ( | |
| "database/sql" | |
| "fmt" | |
| _ "github.com/bmizerany/pq" | |
| "strconv" | |
| "strings" | |
| ) |
| package main | |
| import ( | |
| "encoding/json" | |
| "fmt" | |
| "net/http" | |
| "strconv" | |
| "sync" | |
| "time" | |
| "io/ioutil" |
| CREATE AGGREGATE array_accum (anyarray) | |
| ( | |
| sfunc = array_cat, | |
| stype = anyarray, | |
| initcond = '{}' | |
| ); |
Here are some things I have learned along the way.
Last Updated: 2013-02-08
Original Audience: Hack Reactor
Building systems that fail in predictable ways promote safety and sanity.
Original Audience: Heroku Waza 2013
| class RackTimer | |
| def initialize(app) | |
| @app = app | |
| end | |
| def call(env) | |
| start_request = Time.now | |
| status, headers, body = @app.call(env) | |
| elapsed = (Time.now - start_request) * 1000 | |
| $stdout.puts("request-id=#{env['HTTP_HEROKU_REQUEST_ID']} measure.rack-request=#{elapsed.round}ms") |
| def log(data) | |
| result = nil | |
| if data.key?(:measure) | |
| name = data.delete(:measure).insert(0, ENV["APP_NAME"] + ".") | |
| end | |
| if block_given? | |
| start = Time.now | |
| result = yield | |
| elapsed = (Time.now.to_f - start.to_f) * 1000 | |
| data.merge!("measure.#{name}" => elapsed.round) |
| #encoding UTF-8 | |
| require 'openssl' | |
| require 'base64' | |
| module FernetLite | |
| MAX_CLOCK_SKEW = 60 | |
| VERSION = 0x80 | |
| def self.split_key(k) | |
| dec = Base64.urlsafe_decode64(k) |
| def render_html | |
| dir = Rails.root.join("app", "views", "users") | |
| view = ActionView::Base.new(dir, :user => @user) | |
| view.extend(ApplicationHelper) | |
| view.render(file: 'show', layout: '../layouts/application.html.erb') | |
| end |