2012-12-31 33 views
4

Python的一個特性是pickle函數,它允許您存儲任意任意的東西,並將其精確恢復到原始形式。一個常見的用法是採取一個完全實例化的對象,並醃製它以備後用。在我的情況下,我有一個不可序列化的AMQP消息對象,我希望能夠將它存儲在會話存儲中並檢索它,這可以通過pickle實現。主要區別在於我需要在對象上調用方法,我不只是在尋找數據。什麼是Python中的pythons「pickle」相當於

但是這個項目是在nodejs中,它看起來像所有節點的低級庫都必須有一些方法來保存這個對象,以便它可以在Web調用之間保持。

用例是一個網頁拿起一個RabbitMQ消息並顯示從它派生的信息。我不希望在消息被執行之前確認消息。我通常只是將數據保存在會話狀態中,但這不是一種選擇,除非我能以某種方式將它保存爲原始格式。

+0

什麼是「一個AMQP消息對象「?爲什麼它不可序列化?序列化聽起來像是你期望能夠對任何可以稱之爲「消息」的事情做的主要事情之一 - 你應該如何發送它,否則? –

+0

@Karl這不是實際的消息,而是處理消息的類。 AFAIK,函數不能以大多數格式序列化,只能是數據。由於我想稍後調用對象上的.acknowledge()方法,這就是我想要存儲它的原因。 – zenWeasel

+1

存儲對象實例實際上很脆弱,因爲您仍然需要將原始源代碼放在包層次結構的原始位置中,以重新構建它。最好只是醃製數據。對於Node,json似乎是一個自然的選擇。 – Keith

回答

1

據我所知,在JavaScript(或標準節點庫)中沒有相當於pickle的功能。

1

查看https://github.com/carlos8f/hydration看看它是否符合您的需求。我不確定它完全如pickle,但它非常棒。

聲明:模塊作者和我是同事。

+0

感謝您的鏈接。不幸的是,對我而言重要的類型是「功能」,我認爲您的項目不會。我承認這是一個非常奇怪的用例。 – zenWeasel

+0

這很有趣,你提到...也許一年前,我寫了一個小工具來在JS中序列化/存儲/水合功能,我會盡力挖掘它。沒有把它放在github上,想着「還有誰會想要保溼功能?」 – hunterloftis

+2

在這裏,更新和上傳 - 絕對不是一個Pickle替換,但它確實處理函數:https:// github。com/hunterloftis/cryo – hunterloftis

相關問題