python : UDP非同期受信

pythonUDP の非同期受信したいことってありませんか?
まぁ,そんなないですよね・・・
しかし,何かしらのデバイスからUDPを受け取って,それをsocket.io とかでサーバーに送りたい時なんかは,python でサクッと書くのが楽なんじゃないかなぁと.
というわけで,pythonUDP の非同期受信のコードをメモしておきます.
ネットを探しても,あまりサンプル見つからなかったけども,コード数的には少なめです.

import asyncore
import socket

class UdpServer(asyncore.dispatcher):

    def __init__(self):
        asyncore.dispatcher.__init__(self)

        # 5000 番ポートにバインド
        self.create_socket(socket.AF_INET, socket.SOCK_DGRAM)
        self.bind(('', 5000))
        return

    # ポートにバインドされた時
    def handle_connect(self):
        print "Udp server Started..."
        return

    # データが飛んできた時
    def handle_read(self):
        data, addr = self.recvfrom(2048)

        # 特定のデータが飛んできたら終了
        if data == 終了条件
            raise asyncore.ExitNow('Server is quitting!')
        return


    def handle_write(self):
        pass


# 例外をキャッチする.サーバー終了後に,何かしらの処理をしたい用
def run():
    instance = UdpServer() 
    try:
        asyncore.loop()    # 非同期ループを開始
    except asyncore.ExitNow, e:
        print e


if __name__ == '__main__':
    run()