2
我有一個ruby腳本,它從串口讀取數據。 該數據可能是一些原始的二進制字符串,代表特定的協議數據報(我正在嘗試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的。
我有redis,可能在這裏很方便,並可以啓動另一個腳本放在這一邊。 (事實上,我有一個連接到數據庫的sinatra api,以及一個等待在兩者之間用於通知新數據即將來臨的pubsub/websocket)
任何建議將不勝感激!