微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

即使我有速率限制器,Python 服务器也会向 TicketMaster 发送多个 API 请求尖峰逮捕违规错误

如何解决即使我有速率限制器,Python 服务器也会向 TicketMaster 发送多个 API 请求尖峰逮捕违规错误

我的服务器正在为同一个查询发送多个 API 请求。这是我的代码

@SOCKETIO.on('retrieve_bookmarks')
@sleep_and_retry
@limits(calls=5,period=1)
def retrieve_bookmarks(data):
    '''This function is for retrieving a
    bookmark from the DB'''
    print("Inside function")
    socket_id = data
    pair = ACTIVE_USER_SOCKET_PAirs[socket_id]
    user_id = pair['ID']
    event_ids = []
    event_details = []
    bookmarked_events = DB.session.query(Bookmarks).filter_by(clientId=user_id)
    for bookmark in bookmarked_events:
        event_ids.append(bookmark.event_id)
    redurl = 'https://app.ticketmaster.com/discovery/v2/events/'
    for i_d in event_ids:
        with RATE_LIMITER:
            print("Inside loop")
            redurl += i_d
            redurl += '.json?apikey={}'.format(APIKEY)
            req = requests.get(redurl)
            jsontext = req.json()
            event_details.append(jsontext)
            redurl = 'https://app.ticketmaster.com/discovery/v2/events/'
    SOCKETIO.emit('retrieve_bookmarks',event_details,broadcast=False,include_self=True)

如果我在运行我的应用程序时检查控制台,它表明我随机收到多个请求的错误,对于单个 ID。我收到错误的 ID 永远不会一致。但是,我确实注意到,在每秒 1 次调用的限制下,我从未遇到过任何峰值逮捕违规行为。我的代码有问题吗。 RATE_LIMITER 设置为每秒最多 5 次调用

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?