Python分析(非基于web)
我出版了一本内部使用的图书馆。它不是基于web的库,但它统一了对多个不同数据源的访问,并以统一的方式提供访问 我想收集这个图书馆的使用统计数据——显然,附带条件是,图书馆的用户不介意使用这些统计数据 现在这不是一个web框架或任何类似的东西,而是一堆类和函数 显然,分析框架必须能够从收集后端不可用的情况下恢复-事实上,库的使用最好无论如何都不受发送数据的影响Python分析(非基于web),python,analytics,Python,Analytics,我出版了一本内部使用的图书馆。它不是基于web的库,但它统一了对多个不同数据源的访问,并以统一的方式提供访问 我想收集这个图书馆的使用统计数据——显然,附带条件是,图书馆的用户不介意使用这些统计数据 现在这不是一个web框架或任何类似的东西,而是一堆类和函数 显然,分析框架必须能够从收集后端不可用的情况下恢复-事实上,库的使用最好无论如何都不受发送数据的影响 以前有人写过这样的东西吗?显然,我自己也可以找到一个,但当遇到这样的问题时,我总是试图找到一个已经完成的版本(因为他们可能比我做得更好)。
以前有人写过这样的东西吗?显然,我自己也可以找到一个,但当遇到这样的问题时,我总是试图找到一个已经完成的版本(因为他们可能比我做得更好)。您可以进行本地日志记录和计划的统计数据上传,将此日志发送到您的服务器。当然,用户必须同意,但我想这是一种常见的做法。 为此,您可以使用任何日志记录工具,如。 要上传到您的服务器,您可以使用任何网络库,如 这两个结合在一起可以提供一个几乎完整的解决方案,您只需执行一些粘合逻辑即可
如果您想在使用该库的同时(我不知道您为什么要使用该库),也可以使用twisted,因为它能够进行异步传输。您可以在桌面或移动应用程序中使用许多“web”分析平台 Mixpanel是我看过的一款很流行的产品,但你也可以用这种方式使用谷歌分析。基本上,只要在代码中有方法调用,只要想记录事件,就可以调用mixpanel服务器
与发明自己的相比,使用其中的一个会更容易。如果您可以将数据发送到外部,下面是两个支持Python的解决方案:
- 可以很容易地更改服务器URL
- 该库比谷歌分析更复杂特别是,段库使用事件队列,并在单独的线程中使用它们。如果连接被阻止/减慢,则不会减慢应用程序的速度
$ pip install analytics-python
代码:
谷歌分析
Google Analytics在他们的网站中提供了一个
这是一个粗糙的requests.post
调用,它将阻塞。但是,细分市场API()中的消费者
类很可能被用来直接发布到Google Analytics
# From Google's example:
def track_event(category, action, label=None, value=0):
data = {
'v': '1', # API Version.
'tid': GA_TRACKING_ID, # Tracking ID / Property ID.
# Anonymous Client Identifier. Ideally, this should be a UUID that
# is associated with particular user, device, or browser instance.
'cid': '555',
't': 'event', # Event hit type.
'ec': category, # Event category.
'ea': action, # Event action.
'el': label, # Event label.
'ev': value, # Event value, must be an integer
}
response = requests.post(
'http://www.google-analytics.com/collect', data=data)
# If the request fails, this will raise a RequestException. Depending
# on your application's needs, this may be a non-error and can be caught
# by the caller.
response.raise_for_status()
if __name__ == '__main__':
track_event(
category='MyPythonLibrary',
action='Main called')
print("My app does nothing.")
图书馆的使用由内部完成;大多数机器都不能上网。也。。。将此信息传递给第三方不是一个好主意。话虽如此,我还是会看看其中的一些想法,看看是否可以在内部进行迁移。是的,twisted显然是一个理想的异步框架,可以在其中构建它。我正在考虑一些装饰,我将把它们放在最有趣的函数上。我不想创建一个全新的日志记录程序,因为有些用户希望控制自己的日志记录。然而,仍然在寻找以前做过这件事的人。。。。
# From Google's example:
def track_event(category, action, label=None, value=0):
data = {
'v': '1', # API Version.
'tid': GA_TRACKING_ID, # Tracking ID / Property ID.
# Anonymous Client Identifier. Ideally, this should be a UUID that
# is associated with particular user, device, or browser instance.
'cid': '555',
't': 'event', # Event hit type.
'ec': category, # Event category.
'ea': action, # Event action.
'el': label, # Event label.
'ev': value, # Event value, must be an integer
}
response = requests.post(
'http://www.google-analytics.com/collect', data=data)
# If the request fails, this will raise a RequestException. Depending
# on your application's needs, this may be a non-error and can be caught
# by the caller.
response.raise_for_status()
if __name__ == '__main__':
track_event(
category='MyPythonLibrary',
action='Main called')
print("My app does nothing.")