Skip to content


Subversion checkout URL

You can clone with
Download ZIP
Browse files


  • Loading branch information...
commit c26eea3a5b951a88fb6f339131774f67802e649c 1 parent b5a4eea
@tarcieri tarcieri authored
Showing with 41 additions and 4 deletions.
  1. 0  LICENSE → LICENSE.txt
  2. +41 −4
0  LICENSE → LICENSE.txt
File renamed without changes
@@ -2,12 +2,43 @@
[![Build Status](](
-A reel good web server!
+Reel is a fast, non-blocking/asynchronous web server built using
+[http_parser.rb]( and
+[Celluloid::IO]( It's probably
+most similar to [Goliath](, but thanks
+to Celluloid can be easily composed with multithreaded applications.
+Connections to Reel can be either non-blocking and handled entirely within
+the Reel::Server thread, or the same connections can be dispatched to worker
+threads where they will perform ordinary blocking IO. Reel provides no
+built-in thread pool, however you can build one yourself using Celluloid::Pool,
+or because Celluloid already pools threads to begin with, you can simply use
+an actor per connection.
-Write a README!
+This gives you the best of both worlds: non-blocking I/O for when you're
+primarily I/O bound, and threads for where you're compute bound.
+Reel provides an extremely simple API:
+require 'reel'
+Reel::Server.supervise("", 3000) do |connection|
+ request = connection.request
+ puts "Client requested: #{request.method} #{request.url}"
+ connection.respond :ok, "hello, world"
+Reel is mostly in the proof of concept stage, working well enough you can
+point your favorite benchmarking utility at it, but not exactly speaking
+valid HTTP yet.
@@ -16,3 +47,9 @@ Contributing
* Make your changes and send me a pull request
* If I like them I'll merge them
* If I've accepted a patch, feel free to ask for commit access
+Copyright (c) 2012 Tony Arcieri. Distributed under the MIT License. See
+LICENSE.txt for further details.
Please sign in to comment.
Something went wrong with that request. Please try again.