Python中Faust库的详细介绍
本篇內(nèi)容介紹了“Python中Faust庫的詳細(xì)介紹”的有關(guān)知識,在實(shí)際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!
目錄
-
Faust是一個流處理庫
-
將kafka流中的思想移植到Python中
-
agent是一個async def的函數(shù),因此它還可以異步執(zhí)行其他操作
-
使用Kafka topic作為“預(yù)寫日志”
-
Faust支持任何類型的流數(shù)據(jù)
-
Faust是靜態(tài)類型的
-
Faust簡介
-
高可用性
-
分布式的
-
快速
-
靈活性
-
安裝
-
綁定
-
下載并從源文件中安裝
-
使用開發(fā)版本
-
常見問題
Faust是一個流處理庫
將kafka流中的思想移植到Python中
它被用于Robinhood去構(gòu)建高性能的分布式系統(tǒng)和實(shí)時數(shù)據(jù)通道,每天處理數(shù)十億的數(shù)據(jù)。
Faust同時提供流處理和事件處理同類型的工具分享例如:Kafka Streams, Apache Spark/Storm/Samza/Flink
它不需要使用一個DSL,僅需要用到Python!這意味著你在做流處理的時候可以使用所有你喜歡的Python庫:
NumPy, PyTorch, Pandas, NLTK, Django, Flask, SQLAlchemy等等。
由于需要使用新的async/await語法和變量類型注釋方法,F(xiàn)aust需要使用Python3.6以上的版本。
這里有一個處理輸入命令流的示例:
這個agent裝飾器定義了一個“流處理器”,它本質(zhì)上是一個Kafka topic,并且可以對接收到的每個事件做一些處理。
agent是一個async def的函數(shù),因此它還可以異步執(zhí)行其他操作
如web請求。
這個系統(tǒng)可以持久化狀態(tài),執(zhí)行方式類似于數(shù)據(jù)庫。表被命名成分布式的key/value儲存,你可以使用常規(guī)的Python字典來做這件事。
在每臺機(jī)器上的本地用c++編寫的超快嵌入式數(shù)據(jù)庫(被稱為RocksDB)存儲表。
表還可以存儲可選的“窗口”聚合計(jì)數(shù),以便跟蹤“前一天的單擊次數(shù)”或“前一個小時的單擊次數(shù)”。與Kafka流一樣,我們支持滾動、跳躍和滑動時間窗口,舊窗口可以過期以阻止數(shù)據(jù)填充。
為了提高可靠性
使用Kafka topic作為“預(yù)寫日志”
當(dāng)一個密鑰被更改時,我們將其發(fā)布到更新的日志上。備用節(jié)點(diǎn)使用這個更新日志來保存數(shù)據(jù)的精確副本,并在任何節(jié)點(diǎn)發(fā)生故障時支持立即恢復(fù)。
對于用戶來說,表只是一個字典,但是數(shù)據(jù)在重新啟動和跨節(jié)點(diǎn)復(fù)制之間存在,所以在故障發(fā)生時其他節(jié)點(diǎn)可以自動接管。
您可以通過URL統(tǒng)計(jì)頁面瀏覽數(shù)量:
發(fā)送到Kafka topic的數(shù)據(jù)是分區(qū)的,這意味著點(diǎn)擊數(shù)將用URL的這種方式進(jìn)行分片。因此,同一個URL的每個計(jì)數(shù)都會立刻被傳遞給同一個Faust worker實(shí)例。
Faust支持任何類型的流數(shù)據(jù)
字節(jié)、Unicode和序列化結(jié)構(gòu),同時也支持使用現(xiàn)代Python語法的“模型”來描述流中的keys和value是如何被序列化的。
Faust是靜態(tài)類型的
使用mypy類型檢查器,所以您在編寫應(yīng)用程序時可以充分利用靜態(tài)類型的優(yōu)勢。
Faust源代碼很小,組織良好,是學(xué)習(xí)Kafka流實(shí)現(xiàn)的好資源。
在引言頁學(xué)習(xí)更多關(guān)于Faust的知識.jpg
去閱讀更多關(guān)于Faust,系統(tǒng)請求,安裝指導(dǎo),論壇資源等等,或者直接訪問快速開始的教程。在一個編寫流處理的應(yīng)用中去查看關(guān)于Faust應(yīng)用,然后通過使用者手冊深入探討。深層次的信息都根據(jù)不同主題在這個手冊中進(jìn)行說明
Faust簡介
Faust非常容易使用。在學(xué)習(xí)其他的流處理方法時,你總是需要從一個復(fù)雜的hello-world工程和相應(yīng)的基礎(chǔ)要求開始學(xué)習(xí)。Faust僅僅需要Kafka,剩下的就是只需要Python,如果你知道Python的話你就可以直接使用Faust去做流處理的工作了,并且它可以整合和他相關(guān)的一切。
這兒有一個簡單的應(yīng)用程序你可以做:源代碼是Python的
您可能會被async和await這兩個關(guān)鍵字嚇到,但是您在使用Faust時不需要知道asyncio是如何工作的:只要模仿這些例子就可以得到您想要的結(jié)果。
示例應(yīng)用程序啟動兩個任務(wù):一個是處理流,另一個是向流發(fā)送事件的后臺線程。在實(shí)際的應(yīng)用程序中,您的系統(tǒng)將向Kafka topic發(fā)布事件,您的處理器可以從Kafka topic獲取事件信息,并且只需要后臺線程將數(shù)據(jù)輸入到我們的示例中。
高可用性
Faust是高度可用的,并且可以在網(wǎng)絡(luò)問題和服務(wù)器崩潰中生存下來。在節(jié)點(diǎn)失敗的情況下,它可以自動恢復(fù),并且表將接管備用節(jié)點(diǎn)。
分布式的
根據(jù)您的應(yīng)用程序的需要啟動更多實(shí)例。
快速
一個單內(nèi)核的Faust worker實(shí)例已經(jīng)可以每秒處理數(shù)萬個事件,我們有理由相信,一旦我們能夠支持一個更優(yōu)化的Kafka客戶端,吞吐量就會增加。
靈活性
Faust就是Python,而流是一個無限的異步迭代器。如果您知道如何使用Python,那么您已經(jīng)知道如何使用Faust,它可以與您喜歡的Python庫一起使用,比如Django、Flask、SQLAlchemy、NTLK、NumPy、Scikit、TensorFlow等等。最后,如果你的時間不是很緊張,并且又想快速的提高,最重要的是不怕吃苦,建議你可以聯(lián)系維:762459510 ,那個真的很不錯,很多人進(jìn)步都很快,需要你不怕吃苦哦!大家可以去添加上看一下~
安裝
您可以通過Python包或從源文件中安裝Faust
使用pip安裝它:
綁定
Faust還定義了一組setuptools擴(kuò)展,可以用來安裝Faust,并且有一個給定特性的依賴關(guān)系。
您可以在您的需求中或在pip命令行中使用方括號來指定它們。使用逗號分隔多個包:
以下的綁定均是有效的:
商店
最優(yōu)化
傳感器
事件循環(huán)
調(diào)試
下載并從源文件中安裝
您可以這樣安裝它:
如果當(dāng)前沒有使用virtualenv,則必須以特權(quán)用戶的身份執(zhí)行最后一個命令。
使用開發(fā)版本
您可以使用以下pip命令安裝Faust的最新版本:
常見問題
Faust可以在Django/Flask/etc上使用嗎?
使用gevent
這種方法適用于任何可以與gevent一起工作的阻塞Python庫。
使用gevent需要您安裝aiogevent模塊,您可以將其作為Faust的包進(jìn)行安裝:
然后要真正的使用gevent作為事件循環(huán),您要么在faust程序中使用-L <faust --loop>
命令:
要么在你腳本的前面加入import mode.loop.gevent
記住:非常重要的一點(diǎn)是,它位于模塊的最頂端,并且在導(dǎo)入庫之前執(zhí)行。
使用eventlet
這種方法適用于任何可以使用eventlet的阻塞Python庫。
使用eventlet需要您安裝aioeventlet模塊,您可以將其安裝為與Faust一起的捆綁包。
然后要實(shí)際使用eventlet作為事件循環(huán),您要么在faust程序中使用-L <faust --loop>
命令:
要么在你腳本的前面加入import mode.loop.gevent
警告
非常重要的是,它位于模塊的最頂端,并且在導(dǎo)入庫之前執(zhí)行。
Faust可以在Tornado上使用嗎?
可以!使用tornado.platform.asyncio
鏈接:http://www.tornadoweb.org/en/stable/asyncio.html
Faust可以在Twisted上使用嗎?
可以!使用asyncio反應(yīng)器實(shí)現(xiàn):
鏈接:https://twistedmatrix.com/documents/17.1.0/api/twisted.internet.asyncioreactor.html
是否支持Python3.5或者更早的版本?
目前還沒有支持Python 3.5的計(jì)劃,但是歡迎您為這個項(xiàng)目做出貢獻(xiàn)。
以下是實(shí)現(xiàn)這一目標(biāo)所需的一些步驟
-
源代碼轉(zhuǎn)換以重寫變量注釋到注釋
示例,代碼:
-
重寫異步函數(shù)的源代碼轉(zhuǎn)換
示例,代碼:
必須重寫:
總結(jié)
以上是生活随笔為你收集整理的Python中Faust库的详细介绍的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 被绞杀的网景:互联网门口第一滴血,互联网
- 下一篇: 王者荣耀安琪拉台词(如何玩好《王者荣耀》