一つのGAEスロットで複数のWaveロボットをホストするためのライブラリ作りました

http://github.com/technohippy/appengine_multi_robot_runner/

前に同じ事をするライブラリを作ったら、二週間もしない内にWaveのロボットAPIのバージョンが上がって使い物にならなくなりました。今度はもう少し息が長いライブラリになることを祈ってます。

Waveのロボットを作ろうって人がどのくらいいるのか分かってませんけど、もしいたら、とりあえず使って損はないです。あとで単体のアプリに昇格させるとしてもコードの修正はほとんどいらないし。

サンプルコード。

from waveapi import robot
from waveapi import events
import appengine_multi_robot_runner

class FooRobot(robot.Robot):
  def __init__(self):
    robot.Robot.__init__(self, 'Foo')
    self.register_handler(events.BlipSubmitted, self.on_blip_submitted)

  def on_blip_submitted(self, event, wavelet):
    wavelet.reply('foo')

class BarRobot(robot.Robot):
  def __init__(self):
    robot.Robot.__init__(self, 'Bar')
    self.register_handler(events.BlipSubmitted, self.on_blip_submitted)

  def on_blip_submitted(self, event, wavelet):
    wavelet.reply('bar')

if __name__ == '__main__':
  appengine_multi_robot_runner.compound_and_run([
    ('foo', FooRobot()), # foo.your_appname@appspot.com
    ('bar', BarRobot())  # bar.your_appname@appspot.com
  ])

例えば最初に上のを使ってて、人気が出てきてからやっぱりFooRobotを独立させたくなったら、appengine_multi_robot_runner.compound_and_runとこをappengine_robot_runner.runに変えるだけ。

if __name__ == '__main__':
  appengine_robot_runner.run(FooRobot())

別に難しいことやってるわけでもないちょっとしたライブラリだけどマジオススメ・・・だと思うんだけど、多分あんまり使われないだろうなー。