【问题标题】:Keen python library has no add_event attribute in Flask Rest-Plus appKeen python 库在 Flask Rest-Plus 应用程序中没有 add_event 属性
【发布时间】:2017-08-03 17:47:47
【问题描述】:

我有一个简单的 Flask Rest-Plus 应用程序,它用作 Keen.io 实现的微服务前端。我已经为应用程序设置了一个自定义虚拟环境,并通过pip install keen 安装了热衷。我可以在那个环境中通过 python 控制台保存事件;但是,当我尝试从 Flask 端点执行相同操作时,它会引发以下错误消息:

[2017-08-03 12:31:02,784] ERROR in app: Exception on/api/analytics/track/pageview [POST]
Traceback (most recent call last):
  File "/home/garrett/env/event-api/local/lib/python2.7/site-packages/flask/app.py", line 1612, in full_dispatch_request
    rv = self.dispatch_request()
  File "/home/garrett/env/event-api/local/lib/python2.7/site-packages/flask/app.py", line 1598, in dispatch_request
    return self.view_functions[rule.endpoint](**req.view_args)
  File "/home/garrett/env/event-api/local/lib/python2.7/site-packages/flask_restplus/api.py", line 313, in wrapper
    resp = resource(*args, **kwargs)
  File "/home/garrett/env/event-api/local/lib/python2.7/site-packages/flask/views.py", line 84, in view
    return self.dispatch_request(*args, **kwargs)
  File "/home/garrett/env/event-api/local/lib/python2.7/site-packages/flask_restplus/resource.py", line 44, in dispatch_request
    resp = meth(*args, **kwargs)
  File "/home/garrett/dev/swiftshopper/event-api/api/analytics/endpoints/track.py", line 29, in post
    track_event("pageview", payload)
  File "/home/garrett/dev/swiftshopper/event-api/api/analytics/utils/keen.py", line 10, in track_event
    keen.add_event("signups", {
AttributeError: 'module' object has no attribute 'add_event'

调用代码:

import keen

# This is your actual Project ID and Write Key
keen.project_id = "..."
keen.write_key = "..."

# Wrapper around event API
def track_event(event_name, payload):
    #keen.add_event(event_name, payload)
    keen.add_event("signups", {
      "username": "lloyd",
      "referred_by": "harry"
    })

感谢支持/想法!

【问题讨论】:

    标签: python python-2.7 keen-io


    【解决方案1】:

    无法让它工作,但使用请求和 Web api 重新创建端点非常容易:

    import requests
    import json
    
    # This is your actual Project ID and Write Key
    PROJECT_ID = "..."
    MASTER_KEY = "..."
    
    headers = {
        "Content-Type": "application/json",
        "Authorization": MASTER_KEY
    }
    
    # Event endpoint
    KEEN_URI = "https://api.keen.io/3.0/projects/{:s}/events/".format(PROJECT_ID)
    
    # Wrapper around event API
    def track_event(event_name, payload):
        # Build URI
        URI = KEEN_URI + event_name
    
        # Make request
        r = requests.post(URI, headers=headers, data=json.dumps(payload))
        response = r.json()
    
        print(response)
    

    【讨论】:

      【解决方案2】:

      我认为您的代码没有任何问题。我也在多个烧瓶项目中使用过 Keen。我想知道的是我看不到的东西。

      由于“模块”对象有错误,这可能会有所帮助:AttributeError: 'module' object has no attribute

      我也想知道有效载荷是否有问题。

      【讨论】:

      • 如果您愿意,我也很乐意分享一些热衷于 Flask 项目的代码。现在我面前没有一个简单的例子,但我以后可以。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-01-18
      • 1970-01-01
      • 2022-11-28
      • 1970-01-01
      • 2022-11-03
      • 1970-01-01
      相关资源
      最近更新 更多