Python的分析


我们的Python库允许您从Python代码记录分析数据。请求点击我们的服务器,然后我们将数据路由到您在目的地页面上启用的任何分析服务。

这个库是开源的,所以你可以在github上看看

所有Segment的服务器端库都构建了高性能,因此您可以在Web服务器控制器代码中使用它们。此库使用内部队列进行确认跟踪调用非阻塞和快速。它还使用单独的线程对消息进行批处理并异步刷新到我们的服务器。

想在发布会上保持更新?订阅释放饲料

入门

安装Analytics-Python.使用脉冲:

PIP安装Analytics-Python

如果您正在使用一个系统来管理依赖项,那么您将希望将库固定到1.x.避免在更新库时破坏更改

在您的应用程序内,您将想要的设置你的write_key在进行任何分析之前:

进口分析分析write_key='your_write_key'

注意:如果你需要将数据发送到多个Segment源,你可以为每个初始化一个新的Clientwrite_key

开发环境

默认初始化设置是由后台线程处理的制作准备和队列消息。

在开发中,您可能希望启用一些设置以使其更容易发现问题。启用Analytics.debug.debug.将调试信息记录到Python Logger。您还可以添加一个on_error处理程序专门打印出您从API看到的响应。

defon_error错误项目):打印“发生错误:”错误分析调试=真的分析on_error=on_error

使用Django ?看看Django Docs.

确认

很高兴知道:对于此页面上描述的任何不同方法,您可以使用表示收集数据的变量替换代码示例中的属性和特征。

确认允许您将用户绑定到他们的行为和记录它们的特征。它包括一个唯一的用户ID和您对其了解的任何可选性状。

我们建议打电话确认首次创建用户帐户时的单一时间,并且仅在其特征变更时稍后再识别。

例子确认称呼:

分析确认'019MR8MF4R'{“电子邮件”'John@example.com''名称''约翰·史密斯''朋友们'30.})

这个例子确认呼叫是通过他唯一的用户ID识别John(你在你的数据库中认识他的人)并用它标记他电子邮件的名字朋友们特质。

确认Call包含以下字段:

用户身份字符串或整数 数据库中此用户的ID。
特征dict,可选 你所知道的用户特征的字典。喜欢的东西:电子邮件的名字或者朋友们
语境dict,可选 一个关于关于该请求的任何语境的地点。要查看支持键的完整引用,请在其中检查上下文参考
时间戳DateTime,可选 一种约会时间代表的对象确认发生。如果您正在导入历史数据,这是最有用的。如果是确认刚刚发生了,将其留空,我们将使用服务器的时间。
Anonymous_id.字符串或int,可选 此用户的匿名会话ID。
一体化dict,可选 要启用或禁用的目标字典

浏览识别方法有效载荷在我们的规格

追踪

跟踪允许您记录用户执行的操作。每个动作都会触发我们所说的“事件”,它也可以有相关的属性。

您需要跟踪对您网站成功指标的事件,如注册商品购买或者书签条

要开始,我们建议追踪一些重要事件。你可以随时添加更多!

例子跟踪称呼:

分析跟踪“f4ca124298”“注册”{“计划”'企业'})

这个调用告诉我们,您的用户刚刚触发了注册活动并选择你的假设'企业'计划。

跟踪事件属性可以是你想要记录的任何东西,例如:

分析跟踪“f4ca124298”'文章书签'{'标题'“下雪”'字幕'“隧道溪的禁令”'作者'“约翰分支”})

跟踪方法具有以下字段:

用户身份字符串 数据库中此用户的ID。
事件字符串 您正在跟踪的事件的名称。我们建议人类可读名称歌曲播放或者状态更新
特性dict,可选 事件的属性词典。如果事件是产品添加,它可能有属性价格或者产品
语境dict,可选 一个关于关于该请求的任何语境的地点。要查看支持键的完整引用,请在其中检查上下文参考
时间戳DateTime,可选 一种约会时间代表的对象跟踪发生。如果您正在导入历史数据,这是最有用的。如果是跟踪刚刚发生了,将其留空,我们将使用服务器的时间。
Anonymous_id.字符串或int,可选 此用户的匿名会话ID。
一体化dict,可选 要启用或禁用的目标字典

查找详情活动命名的最佳实践以及跟踪方法有效载荷在我们的规格

页面

页面方法允许您记录网站上的页面查看,以及关于正在查看的页面的可选额外信息。

如果您使用我们的客户端设置与Python库结合使用,页面调用是已经跟踪了你默认情况下。但是,如果要手动录制自己的页面视图,并且不使用我们的客户端库,请继续阅读!

例子页面称呼:

分析页面'用户身份'“文档”'Python'{“url”'//www.asianminres.com'})

页面Call包含以下字段:

用户身份_细绳 用户是该组的一部分的用户的ID。
类别字符串,可选 页面的类别。对电子商务这样的东西有用,许多页面经常生活在更大的类别下。
的名字字符串,可选 例如,页面的名称注册或者
特性dict,可选 页面属性。要查看我们标准化的保留页面属性的参考,请查看我们的规格在这里
语境dict,可选 一个关于关于该请求的任何语境的地点。要查看支持键的完整引用,请在其中检查上下文参考
时间戳DateTime,可选 一种约会时间代表的对象页面发生。如果您正在导入历史数据,这是最有用的。如果是页面刚刚发生了,将其留空,我们将使用服务器的时间。
Anonymous_id.字符串或int,可选 此用户的匿名会话ID。
一体化dict,可选 要启用或禁用的目标字典

浏览页面方法有效载荷在我们的规格

屏幕

屏幕方法允许您在移动应用程序上录制屏幕视图,以及有关正在查看屏幕的可选额外信息。

如果你使用我们的移动SDK与库结合,屏幕呼叫是已经跟踪了你默认情况下。但是,如果你想手动记录自己的屏幕视图,并且不使用我们的SDK库,请继续阅读!

例子屏幕称呼:

分析屏幕'用户身份'“设置”“亮度”{'从''主屏幕'})

屏幕Call包含以下字段:

用户身份字符串或数字 用户是该组的一部分的用户的ID。
类别字符串,可选 页面的类别。对电子商务这样的东西有用,许多页面经常生活在更大的类别下。
的名字字符串,可选 例如,页面的名称注册或者
特性dict,可选 屏幕属性的字典。
语境dict,可选 一个关于关于该请求的任何语境的地点。要查看支持键的完整引用,请在其中检查上下文参考
时间戳DateTime,可选 一种约会时间代表的对象屏幕发生。如果您正在导入历史数据,这是最有用的。如果是屏幕刚刚发生了,将其留空,我们将使用服务器的时间。
Anonymous_id.字符串或int,可选 此用户的匿名会话ID。
一体化dict,可选 要启用或禁用的目标字典

浏览屏幕方法有效载荷在我们的规格


集团

团体让你联系一个识别的用户与一个群体。一组可以是公司,组织,帐户,项目或团队新万博app2.0下载!它还让您录制关于该组的自定义特征,如行业或员工数量。

这对工具有用对讲机罚款totango,因为它将用户绑定到团体其他用户。

例子团体称呼:

分析团体'用户身份'“group_id”{'名称'“Initech”'领域''会计软件'})

团体Call包含以下字段:

用户身份字符串或数字 用户是该组的一部分的用户的ID。
group_id.字符串或数字 组ID。
特征dict,可选 关于你了解这个小组的特征的问题。对于公司来说新万博app2.0下载,他们可能是这样的东西的名字地址,或电话
语境dict,可选 一个关于关于该请求的任何语境的地点。要查看支持键的完整引用,请在其中检查上下文参考
时间戳DateTime,可选 一种约会时间代表的对象团体发生。如果您正在导入历史数据,这是最有用的。如果是团体刚刚发生了,将其留空,我们将使用服务器的时间。
Anonymous_id.字符串或int,可选 此用户的匿名会话ID。
一体化dict,可选 要启用或禁用的目标字典

有关的更多细节有关团体包括团体方法有效载荷在我们的规格

别名

别名是你如何与另一个身份关联。这是一种高级方法,但需要成功管理用户身份一些我们的目的地。

mixpanel.它用于将一个匿名用户与一个已确认的用户在注册后关联起来。为亲吻如果您的用户切换id,您可以使用' alias '来重命名' userId '。

例子别名称呼:

分析别名previous_id.用户身份

别名Call包含以下字段:

previous_id.字符串 此用户的先前ID为别名。
用户身份字符串 要作为别名的用户ID。
语境dict,可选 一个关于关于该请求的任何语境的地点。要查看支持键的完整引用,请在其中检查上下文参考
时间戳DateTime,可选 一种约会时间代表的对象跟踪发生。如果您正在导入历史数据,这是最有用的。如果是跟踪刚刚发生了,将其留空,我们将使用服务器的时间。
一体化dict,可选 要启用或禁用的目标字典

这里有一个完整的例子,说明我们如何使用别名称呼:

#匿名用户在匿名ID下进行操作分析跟踪“92734232-2342423423-973945”'匿名活动'#匿名用户注册并别名到他们的新用户ID分析别名“92734232-2342423423-973945”'1234'#用户被识别分析确认'1234'{计划“免费”})#已识别的用户执行操作分析跟踪'1234'“确定行动”

欲查询有关别名包括别名呼叫有效载荷,看看我们的规格


历史导入

您可以通过添加来导入历史数据时间戳对您的任何方法调用的参数。如果您刚刚切换到段,这可能会有所帮助。

历史进口只能达到可以接受历史时间戳数据的目的地。大多数分析工具,如MixPanel,幅度,吻等等,可以处理这种类型的数据。一个不接受历史数据的一个通用目的地是Google Analytics,因为他们的API无法接受历史数据。

注意:如果你正在追踪正在发生的事情,请忽略时间戳我们的服务器将为您的请求进行时间戳。

进口约会时间dateutil.tz进口tzutc时间戳=约会时间约会时间253810.17.0.0.0.0.Tzinfo.=tzutc())分析跟踪'019MR8MF4R''买了一场比赛'{“游戏”永远的毁灭公爵》},时间戳=时间戳

Python的时区

Python的约会时间模块支持两种类型的日期和时间对象:没有时区信息的“天真”对象,以及包含TimeZones的“识别”对象。默认情况下,新创建约会时间对象是天真的。您需要确保在导入数据时使用TimeZone感知对象以确保正确发送时区信息。

在上面的例子中,我们使用Tzinfo.参数约会时间构造函数。注意,如果我们忽略了参数,我们就不会传递timezone信息了:

>>>幼稚的=约会时间约会时间2015年15.0.0.0.0.>>>意识到=约会时间约会时间2015年15.0.0.0.0.Tzinfo.=tzutc())>>>幼稚的isoformat()2015 - 01 - 05 t00:00:00>>>意识到isoformat()'2015-01-05T00:00:00 + 00:00'

如果您有一个包含时区信息的ISO格式时间戳字符串,dateutil.parser.能够创建感知的datetime对象:

>>>进口dateutil.parser.>>>dateutil解析器解析2012 - 10 - 17 t18:58:57.911z约会时间约会时间2012年10.17.18.5857911000Tzinfo.=tzutc())>>>dateutil解析器解析'2016-06-06T01:46:33.939388 + 00:00'约会时间约会时间2016年6.6.14633939388Tzinfo.=tzutc())>>>dateutil解析器解析'2016-06-06T01:46:33.939388 + 07:00'约会时间约会时间2016年6.6.14633939388Tzinfo.=Tzoffset.没有任何25200)))>>>dateutil解析器解析'2016-06-06T01:46:33.939388-07:00'约会时间约会时间2016年6.6.14633939388Tzinfo.=Tzoffset.没有任何-25200)))

如果你发现自己有一个天真的对象,并且知道它应该进入什么时间,你也可以使用pytz创建意识约会时间来自天真的对象:

>>>进口约会时间>>>进口pytz>>>幼稚的=约会时间约会时间现在()>>>意识到=pytz时区'美国/太平洋')。本地化幼稚的>>>幼稚的isoformat()'2016-06-05T21:52:1499635'>>>意识到isoformat()'2016-06-05T21:52:1499635-07:00'

PYTZ文档包含一些关于时区使用的很好的附加信息,以及如何处理一些更有趣的边缘情况。

无论你用什么方法,确保你是有意识的约会时间对象,否则将在错误的时区。

#检查DateTime对象D是否已知断言D.Tzinfo.没有任何D.Tzinfo.utcoffsetD.没有任何

服务器日志示例

进口dateutil.parser.进口分析分析write_key='your_write_key'日志=['2012-10-17T18:58:57.911z 019MR8MF4R /购买/ T恤']为了入口日志timestamp_str用户身份URL.=入口分裂' '时间戳=dateutil解析器解析timestamp_str# datetime。约会时间object is aware#有时区?检查哟'self断言时间戳Tzinfo.没有任何时间戳Tzinfo.utcoffset时间戳没有任何分析跟踪用户身份'衬衫买'{“颜色”'蓝色的''收入'17.90},时间戳=时间戳分析冲洗()

选择目的地

别名团体确认页面跟踪呼叫都可以通过一个对象一体化这让您打开或关闭某些目的地。默认情况下,所有目的地都已启用。

这是一个例子跟踪电话一体化对象显示。

分析跟踪'9742''歌曲播放'一体化={'全部'错误的'亲吻'真的'谷歌分析'错误的})

在这种情况下,我们指定我们希望这个标识只指向Kissmetrics。'全部':假说明除非另有说明,否则不应启用任何目的地。'亲吻':真实打开吻等等。

目的地标志是区分大小写的和匹配docs中的目的地名称(即“Adlearn开放平台”,“AWE.SM”,“MailChimp”等)。

注意:

  • 在业务级别可用,过滤跟踪调用可以直接从源模式页面上的Segment UI完成。如果可能的话,我们建议使用UI,因为它是管理过滤器的一种更简单的方法,并且可以在不更改代码的情况下进行更新。

  • 如果您在祖父的计划上,则通过段仪表板过滤的服务器端发送的事件仍然会指望您的API使用情况。

批处理

我们的图书馆是为支持高性能环境而构建的。这意味着在为每秒提供数百个请求的Web服务器上使用Analytics-Python是安全的。

你打电话的每个方法导致HTTP请求,但在内存中排队。在背景中批量刷新消息,允许更快的操作。

默认情况下,我们的库将刷新:

  • 每100条消息(控制与upload_size.
  • 自最后一冲洗以来已经通过了0.5秒(控制upload_interval

最多有一个500KB.每个批处理请求和32KB.每个电话。

如果有太多的消息会发生什么?

如果模块检测到它不能比接收消息快速刷新,它将只需停止接受消息即可。这意味着由于备份的分析队列,您的程序永远不会崩溃。默认值max_queue_size.10000

我现在如何冲洗?!

你也可以按需冲洗。例如,在程序结束时,您将希望刷新以确保队列中没有任何东西剩余。电话就可以了冲洗方法:

分析冲洗()

调用此方法将堵塞调用线程,直到队列中没有消息剩余。您可能希望将其用作清理脚本的一部分,而避免将其用作请求生命周期的一部分。

我如何gzip请求?

在将批处理请求发送给Segment之前,可以设置GZIP.构建客户时的参数。

分析进口客户端客户端'your_write_key'GZIP.=真的

检测错误

可以监听在失败刷新时要调用的事件:

defon_error错误项目):打印“失败”错误分析on_error=on_error

记录

Analytics-python使用标准的python日志模块。默认情况下,日志记录是启用的,并在logging.warning.等级。如果你想说更多,你可以设置不同的log_level

进口日志记录日志记录getlogger.'部分')。setLevel'debug'

选项

如果您讨厌默认值或想要向多个源发送数据,那么您可以创建自己的客户端。请记住,每个客户端都运行单独的后台线程,因此您不想在每个请求中创建这些问题。看看这些Gizmos:

分析进口客户端客户端'your_write_key'调试=真的on_error=on_error发送=真的max_queue_size.=100000upload_interval=5.upload_size.=500.GZIP.=真的
调试保龄球 真的更详细地说,错误的默认情况下。
发送保龄球 错误的为避免将数据发送到段,真的默认情况下。
on_error功能 每当发生错误时都会调用错误处理程序
max_queue_size. 队列中允许的最大元素数。如果达到这种状态,就意味着你识别/追踪的速度比你冲水的速度还快。如果发生这种情况,让我们知道!!
upload_interval浮动 频率,单秒钟,将数据发送到段。默认值为0.5。
upload_size. 批量上传的条目数。缺省值为100。
GZIP.保龄球 真的在发送之前用Gzip压缩数据,错误的默认情况下。
sync_mode.保龄球 真的要禁用线程并同步发送所有请求,错误的默认情况下。实验,看后台线程和同步模式

django

为Django web服务器添加分析,你需要在准备好()方法习俗AppConfig对项目中的一个应用程序的对象。此方法负责为您的项目执行初始化任务。

myapp / apps.py.文件:

django.apps.进口AppConfig进口分析班级myappconfigAppConfig):def准备好了自我):分析write_key='your_write_key'

myapp / __init__ . py文件:

default_app_config.='myapp.apps.myappconfig'

这在生产/ uWSGI / gUnicorn中可以工作吗?

是的!

如何添加到Django的日志记录?

如果您正在对分析进行故障排除,您将希望打开日志记录。

你需要添加分析记录器和处理程序settings.py

记录={“版本”1“格式器”{“简单”{'格式''%(levelname)s%(消息)s'}},'处理人员'{“控制台”{'等级''debug'“类”'logging.streamHandler''格式化器'“简单”}},'逻辑'{'部分'{'处理人员'[“控制台”],'等级''debug'“传播”真的}}}

并打开模块登录您的初始化呼叫urls . py

进口日志记录进口分析分析调试=真的#打开调试日志分析write_key='your_write_key'

谷歌应用引擎

我们从我们的客户那里听说谷歌App Enginmanbetx客户端应用下载e不解析项目依赖关系,所以你需要请求python-destil.并将其添加到您的项目中,以便analytics-python能够找到它。

如果您有问题的问题,则会检查您的请求,请检查后台线程和同步模式

故障排除

请求大小限制

请记住,我们有一个尺寸限制32KB.每个请求和500KB.每批处理请求!

如果您有问题,我们有几个技巧有助于常见问题。

调试器中没有事件

  1. 仔细检查您是否遵循了所有步骤快速入门

  2. 确保你正在调用我们的API方法之一,一旦库被成功安装-确认跟踪, 等等。

没有事件在我的最终工具

  1. 仔细检查您的目的地的凭据。

  2. 确保您是故障排除的目标可以接受服务器端API调用。兼容性显示在目的地文档页面和段源目的地页面上的页面上的页面。

  3. 看看目的地的文件看看是否有其他需求使用的方法和目的地,你试图得到工作。

压倒一切的背景值

在某些情况下,您将希望手动传入IP.或者userAgent价值观。由于我们没有自动发送这些,您将手动通过这些语境对象如此:

Analytics.track('9742','歌曲播放',上下文= {'ip':1234,'useragent':'mozilla / 5.0(linux; u; android 4.1.1; en-gb; build / klp)applewebkit /534.30(Khtml,喜欢壁虎)版本/ 4.0 Safari / 534.30'})

一定要看到完整支持键的参考

版本控制

检查您是否有最新版本。

Python -c“导入分析;打印分析.version”

它是否匹配最新的版本

如果不是,更新你的版本。

pip安装-U analytics-python

或者

Easy_install  -  upgrade Analytics-Python

后台线程和同步模式

实验特性,自可用1.3.0b1

在某些情况下,您将想要禁用线程并同步发送每个请求。为此,您可以使用sync_mode.选项:

进口分析分析write_key='your_write_key'分析sync_mode.=真的

最后更改:2020年9月18日



开始使用细分

细分是将你的网站和手机应用数据整合到300多个分析和增长工具中的最简单方法。
或者
创建免费帐户