シリアルポートからデータを読み取るルビースクリプトがあります。 そのデータは、特定のプロトコルデータグラムを表す生のバイナリ文字列である可能性があります(私は今のところXBee APIを試しています)。非ブロッキングルビデータ処理またはメソッドコール
このデータは、メソッド呼び出しの長期的に処理しなければならない、のようなもの:日付から:
- は
- 解析バイナリデータグラム
- 解析ペイロード
- 変換値(すなわちシリアル読みますタイムスタンプ、線形回帰、など)
- は、データベース に挿入JSON
- に変換します
データの所得の頻度は、自分の処理能力よりも速いです。私が想像することができますが、私はこれらのデータグラムのまともな量を収集して、バッチでそれらのすべてを処理する必要があるかもしれませんということです、だから、
loop do
begin
res = @xbee.getresponse
return_super_fast_and_work_that_in_the_background res
rescue => e
puts e #append to some log here or something
end
end
:私はこのような何かをする必要があります。
しかし、私は、このような方法を実装する方法を想像することはできません:私は見つけることができます
#return_super_fast_and_work_in_the_background()
すべての例は、非ブロックIOやネットワークのタスクとEventmachineに関連しています。
私はここに便利ですが、ここに便利かもしれませんが、このスクリプト以外に別のスクリプトを起動することもできます。 (実際に私はデータベースに接続されたsinatra APIを持っており、新しいデータが来ると通知するpubsub/websocketを待っています)
どのような提案も大歓迎です!