Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Python流处理Python

Python流处理Python

作者头像
py3study
发布于 2020-01-06 10:19:15
发布于 2020-01-06 10:19:15
3.7K0
举报
文章被收录于专栏:python3python3

Faust是一个流处理库,将kafka流中的思想移植到Python中。

它被用于Robinhood去构建高性能的分布式系统和实时数据通道,每天处理数十亿的数据。

Faust同时提供流处理和事件处理,同类型的工具分享例如:Kafka Streams, Apache Spark/Storm/Samza/Flink

它不需要使用一个DSL,仅需要用到Python!这意味着你在做流处理的时候可以使用所有你喜欢的Python库:NumPy, PyTorch, Pandas, NLTK, Django, Flask, SQLAlchemy等等。

由于需要使用新的async/await语法和变量类型注释方法,Faust需要使用Python3.6以上的版本。

这里有一个处理输入命令流的示例:

这个agent装饰器定义了一个“流处理器”,它本质上是一个Kafka topic,并且可以对接收到的每个事件做一些处理。

这个agent是一个async def的函数,因此它还可以异步执行其他操作,如web请求。

这个系统可以持久化状态,执行方式类似于数据库。表被命名成分布式的key/value储存,你可以使用常规的Python字典来做这件事。

在每台机器上的本地用c++编写的超快嵌入式数据库(被称为RocksDB)存储表。

表还可以存储可选的“窗口”聚合计数,以便跟踪“前一天的单击次数”或“前一个小时的单击次数”。与Kafka流一样,我们支持滚动、跳跃和滑动时间窗口,旧窗口可以过期以阻止数据填充。

为了提高可靠性,我们使用Kafka topic作为“预写日志”。当一个密钥被更改时,我们将其发布到更新的日志上。备用节点使用这个更新日志来保存数据的较精确副本,并在任何节点发生故障时支持立即恢复。

对于用户来说,表只是一个字典,但是数据在重新启动和跨节点复制之间存在,所以在故障发生时其他节点可以自动接管。

您可以通过URL统计页面浏览数量:

发送到Kafka topic的数据是分区的,这意味着点击数将用URL的这种方式进行分片。因此,同一个URL的每个计数都会立刻被传递给同一个Faust worker实例。

Faust支持任何类型的流数据:字节、Unicode和序列化结构,同时也支持使用现代Python语法的“模型”来描述流中的keys和value是如何被序列化的。

Faust是静态类型的,使用mypy类型检查器,所以您在编写应用程序时可以充分利用静态类型的优势。

Faust源代码很小,组织良好,是学习Kafka流实现的好资源。

在引言页学习更多关于Faust的知识

去阅读更多关于Faust,系统请求,安装指导,论坛资源等等,或者直接访问快速开始的教程。在一个编写流处理的应用中去查看关于Faust应用,然后通过使用者手册深入探讨。深层次的信息都根据不同主题在这个手册中进行说明

Faust是…

简介

Faust非常容易使用。在学习其他的流处理方法时,你总是需要从一个复杂的hello-world工程和相应的基础要求开始学习。Faust仅仅需要Kafka,剩下的就是只需要Python,如果你知道Python的话你就可以直接使用Faust去做流处理的工作了,并且它可以整合和他相关的一切。

这儿有一个简单的应用程序你可以做:源代码是Python的

您可能会被async和await这两个关键字吓到,但是您在使用Faust时不需要知道asyncio是如何工作的:只要模仿这些例子就可以得到您想要的结果。

示例应用程序启动两个任务:一个是处理流,另一个是向流发送事件的后台线程。在实际的应用程序中,您的系统将向Kafka topic发布事件,您的处理器可以从Kafka topic获取事件信息,并且只需要后台线程将数据输入到我们的示例中。

高可用性

Faust是高度可用的,并且可以在网络问题和服务器崩溃中生存下来。在节点失败的情况下,它可以自动恢复,并且表将接管备用节点。

分布式的

根据您的应用程序的需要启动更多实例。

快速

一个单内核的Faust worker实例已经可以每秒处理数万个事件,我们有理由相信,一旦我们能够支持一个更优化的Kafka客户端,吞吐量就会增加。

灵活性

Faust就是Python,而流是一个无限的异步迭代器。如果您知道如何使用Python,那么您已经知道如何使用Faust,它可以与您喜欢的Python库一起使用,比如Django、Flask、SQLAlchemy、NTLK、NumPy、Scikit、TensorFlow等等。

安装

您可以通过Python包或从源文件中安装Faust

使用pip安装它:

绑定

Faust还定义了一组setuptools扩展,可以用来安装Faust,并且有一个给定特性的依赖关系。

您可以在您的需求中或在pip命令行中使用方括号来指定它们。使用逗号分隔多个包:

以下的绑定均是有效的:

商店

最优化

传感器

事件循环

调试

下载并从源文件中安装

下载的Faust版本的网址是:http: //pypi.python.org/pypi/faust

您可以这样安装它:

如果当前没有使用virtualenv,则必须以特权用户的身份执行最后一个命令。

使用开发版本

您可以使用以下pip命令安装Faust的版本:

常见问题

Faust可以在Django/Flask/etc上使用吗?

使用gevent

这种方法适用于任何可以与gevent一起工作的阻塞Python库。

使用gevent需要您安装aiogevent模块,您可以将其作为Faust的包进行安装:

然后要实际使用eventlet作为事件循环,您要么在faust程序中使用-L <faust --loop>

警告

非常重要的是,它位于模块的最顶端,并且在导入库之前执行。

Faust可以在Tornado上使用吗?

可以!使用tornado.platform.asyncio链接:http://www.tornadoweb.org/en/stable/asyncio.html

Faust可以在Twisted上使用吗?

可以!使用asyncio反应器实现:https://twistedmatrix.com/documents/17.1.0/api/twisted.internet.asyncioreactor.html

是否支持Python3.5或者更早的版本?

目前还没有支持Python 3.5的计划,但是欢迎您为这个项目做出贡献。

以下是实现这一目标所需的一些步骤

源代码转换以重写变量注释到注释

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019/09/22 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Awesome Asyncio 《碉堡的Asyncio·中文版》Awesome-Asyncio-CN
Awesome-asyncio 是 Timo Furrer 发起并维护的 Python Asyncio 资源列表。本项目是其中文版,在这里,收集了大量的 Asyncio 的最棒、最新的资源,供大家探索 Python 异步编程世界。
SeanCheney
2018/08/16
2.6K0
python中的twisted入门
Twisted是一个基于事件驱动的网络编程框架,专门用于构建可扩展、高性能和可靠的网络应用程序。它提供了丰富的网络协议和工具,可以实现客户端和服务器端的通信,支持TCP、UDP、SSL等协议。Twisted还具有异步编程的能力,能够处理大量并发连接而不会阻塞主程序。
大盘鸡拌面
2023/10/22
4630
python基础教程:异步IO 之 概念和历史
编程中,我们经常会遇到“并发”这个概念,目的是让软件能充分利用硬件资源,提高性能。并发的方式有多种,多线程,多进程,异步IO等。多线程和多进程更多应用于CPU密集型的场景,比如科学计算的时间都耗费在CPU上,利用多核CPU来分担计算任务。多线程和多进程之间的场景切换和通讯代价很高,不适合IO密集型的场景(关于多线程和多进程的特点已经超出本文讨论的范畴,有兴趣的同学可以自行搜索深入理解)。而异步IO就是非常适合IO密集型的场景,比如网络爬虫和Web服务。
一墨编程学习
2019/05/15
7160
量化A股舆情:基于Kafka+Faust的实时新闻流解析
新闻消息瞬息万变,新闻舆情也对股票市场产生了明显的影响,实时新闻流数据能够为量化交易带来更多的应用场景,比如盘中的风险监控、实时的情绪及热度统计、事件驱动交易等。
量化投资与机器学习微信公众号
2021/07/29
1.9K0
Gunicorn的使用手册看这篇就够了【用过都说好】
Gunicorn 是一个 Python 的 WSGI HTTP 服务器。它所在的位置通常是在反向代理(如 Nginx)或者 负载均衡(如 AWS ELB)和一个 web 应用(比如 Django 或者 Flask)之间。它是一个移植自Ruby的Unicorn项目的pre-fork worker模型,即支持eventlet也支持greenlet。 如果对Flask框架还有不清楚的地方,可以查看本文一分钟学会Flask框架的安装与快速使用 Gunicorn启动项目之后一定会有一个主进程Master和一个或者多个工作进程。工作进程的数量可以指定。工作进程是实际处理请求的进程。主进程是维护服务器的运行。
码农飞哥
2021/11/18
15.7K0
Gunicorn的使用手册看这篇就够了【用过都说好】
gunicorn(独角兽)的简单总结
您好,我是码农飞哥,感谢您阅读本文!本文主要将对gunicorn进行一个简单的总结。
码农飞哥
2021/08/18
2.1K0
花了三个月终于把所有的Python库全部整理了!祝你早日拿到高薪!
pyfiglet,Python写的figlet程序,使用字符组成ASCII艺术图片
一墨编程学习
2019/05/10
5.5K1
【python】Python 资源大全中文版
申明:感谢原作者的整理与分享,本篇文章分享自:https://www.jianshu.com/p/9c6ae64a1bd7 GitHub 上有一个 Awesome - XXX 系列的资源整理,资源非常
一枝花算不算浪漫
2018/06/26
2.2K0
Python后端技术栈(五)--网络编程
The secret to your success is found in your daily routine.
小闫同学啊
2019/07/18
7580
Python后端技术栈(五)--网络编程
Python四大主流网络编程框架,你知道么?
Tornado 是使用 Python 编写的一个强大的可扩展的 Web 服务器。它在处理高网络流量时表现得足够强健,却在创建和编写时有着足够的轻量级,并能够被用在大量的应用和工具中。Tornado 作为 FriendFeed 网站的基础框架,于2009年9月10日发布,目前已经获得了很多社区的支持,并且在一系列不同的场合中得到应用。除 FriendFeed 和 Facebook 外,还有很多公司在生产上转向Tornado,包括 Quora、Turntable.fm、Bit.ly、Hipmunk 及 MyYearbook 等。
小小科
2020/05/27
2.5K0
年底总结一下Python WEB最好用的几个框架,让你有一个系统的了解
2017年就要过完了,我们来总结一下2017年最好用的17个Python Web框架 群内不定时分享干货,包括2017最新的python企业案例学习资料和零基础入门教程,欢迎初学和进阶中的小伙伴入群学习交流 Django Django的主要原则是在时间上发展任何复杂的东西。它最初是为内容管理系统开发的,但其丰富的功能(包括但不限于模板,自动数据库生成,数据库访问层,自动管理界面生成)非常适合其他类型的Web应用程序。提供用于开发的Web服务器。形成序列化和验证,具有模板继承的模板系统,以多种方式缓存,国
企鹅号小编
2018/01/12
3.4K0
年底总结一下Python WEB最好用的几个框架,让你有一个系统的了解
python异步并发框架
呵呵,这个标题有点大,其实只是想从零开始介绍一下异步的基础,以及 Python 开源异步并发框架的发展和互操作性。
py3study
2020/01/08
2.5K1
猫头虎 分享:Python库 Tornado 的简介、安装、用法详解入门教程
在本篇博客中,我们将详细介绍Tornado库的简介、安装步骤以及如何在实际开发中使用它。 猫头虎在实际项目开发中也曾遇到过相关问题,因此会结合亲身经验,为大家提供实用的解决方案。无论你是Tornado新手,还是已经有一定经验的开发者,这篇文章都能帮助你更好地理解和使用Tornado。
猫头虎
2024/08/14
4150
Python 四大主流 Web 编程框架
本文内容摘录自《Python高效开发实战——Django、Tornado、Flask、Twisted》一书。
程序员小猿
2021/01/19
1.9K0
Python 四大主流 Web 编程框架
django、flask和tornado区别
在python的web开发框架中,目前使用量最高的几个是django、flask和tornado, 经常会有人拿这几个对比,相信大家的初步印象应该是 django大而全、flask小而精、tornado性能高。
Python之道
2021/03/05
1.5K0
django、flask和tornado区别
Python库大全,建议收藏留用!
学Python,想必大家都是从爬虫开始的吧。毕竟网上类似的资源很丰富,开源项目也非常多。 Python学习网络爬虫主要分3个大的版块:抓取,分析,存储 当我们在浏览器中输入一个url后回车,后台会发生什么? 简单来说这段过程发生了以下四个步骤: 查找域名对应的IP地址。 向IP对应的服务器发送请求。 服务器响应请求,发回网页内容。 浏览器解析网页内容。 那么学习爬虫需要掌握哪些库呢? 通用: urllib -网络库(stdlib)。 requests -网络库。 grab – 网络库(基于pycurl)。
小小科
2018/06/20
1.9K0
python-成长之路
————————————–  https://github.com/Evlos/Python-Blog-RedisPress
py3study
2020/01/07
1.4K0
同步与异步 Python 有何不同?
你是否听人们说过,异步 Python 代码比“普通(或同步)Python 代码更快?果真是那样吗?
Python猫
2020/10/23
1.3K0
同步与异步 Python 有何不同?
国人开源的异步 Python ORM:GINO
https://python-gino.org/docs/zh/master/tutorials/announcement.html
Python猫
2020/05/14
3K0
国人开源的异步 Python ORM:GINO
Python库大全(涵盖了Python应用的方方面面),建议收藏留用!
学Python,想必大家都是从爬虫开始的吧。毕竟网上类似的资源很丰富,开源项目也非常多。
前端教程
2018/07/27
9260
推荐阅读
相关推荐
Awesome Asyncio 《碉堡的Asyncio·中文版》Awesome-Asyncio-CN
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档