Python分析(非基于web)

Python分析(非基于web),python,analytics,Python,Analytics,我出版了一本内部使用的图书馆。它不是基于web的库,但它统一了对多个不同数据源的访问,并以统一的方式提供访问 我想收集这个图书馆的使用统计数据——显然,附带条件是,图书馆的用户不介意使用这些统计数据 现在这不是一个web框架或任何类似的东西,而是一堆类和函数 显然,分析框架必须能够从收集后端不可用的情况下恢复-事实上,库的使用最好无论如何都不受发送数据的影响 以前有人写过这样的东西吗?显然,我自己也可以找到一个,但当遇到这样的问题时,我总是试图找到一个已经完成的版本(因为他们可能比我做得更好)。

我出版了一本内部使用的图书馆。它不是基于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.")