Evernote thrift bindings
Script to generate python code from thrift idl
Symlinks to external thrift files
Add __init__ to base module
Add gitignore
Add .gitignore is subdir
Fb303
Service Framework initial commit
Initial commit of thrift server task
Add NBThriftServer.getProcessor

Either you shoudld subclass the task and implement TProcessor or make
your VService implement TProcessor
Allow tasks to throw SkipTask during creation

SkipTask allows a task to decide it shouldn't be registered
Make VService call initTask instead of happening in __init__

This allows tasks to introspect self.service.tasks or to call
self.service.requireTask() without worrying about task order
VService.requireTask
Support graceful shutdown, restart better with thrift services
Instead of subclassing TProcessor, set THRIFT=module
vfb303.FacebookBase

Defines a base class, vfb303.FacebookBase.  Mix this into your VService
subclass in order to get an FB303 implementation.
No vim swap files
Support LOOPLESS tasks

Loopless tasks are tasks that set LOOPLESS = True in their class
definition.  This causes initTask(), start(), and stop() to still be
called, but no worker thread is spun up targetting _runloop().

This allows you to implement Tasks that are dependant on other tasks,
can have inputs and methods, but do not occur based on any particular
periodic or queue-based event
improve loggin
Fix initTask() logic to actually work as intended

During initTask() task.service.tasks should be ALL the selected tasks.

Afterwards (in _runloop), task.service.tasks is only the tasks that did
not throw SkipTask