【问题标题】:Flask loop returning KeyError烧瓶循环返回 KeyError
【发布时间】:2021-10-27 12:01:57
【问题描述】:

每当用户打开/刷新特定页面时,我都有一个 Flask 应用程序运行 3 个循环

第一个循环:

for i in range(0, 5):

    conversionToUsername = requests.get(
                f"https://discord.com/api/v9/users/{useridlist[i]}",
                headers={
                    "Authorization":
                    "Bot BOTTOKEN"
    }).json()["username"]

    conversionToDiscriminator = requests.get(f"https://discord.com/api/v9/users/{useridlist[i]}",
    headers={
                    "Authorization":
                    "Bot BOTTOKEN"
    }).json()["discriminator"]

    userIDtoName.append(f"{conversionToUsername}#{conversionToDiscriminator}")

第二次循环:

for j in range(0, 5):
   coinslist.append(coins[str(useridlist[j])])

第三循环:

for l in range(0, 5):
    leaderboardlist.append(f"{userIDtoName[l]} => {coinslist[l]}")

一些重要的东西:

我在模块级别分配了userIDtoNamecoinslistleaderboardlist,并在循环运行之前清除它们。

我向flask页面发送一个请求,这些循环每10秒发生一次,这些请求会更改coins[str(jsondict[j])]的值。

coins 是一个字典,其中包含 Discord 用户 ID 的键和整数(硬币)的值。

useridist 是一个包含 Discord 用户 ID 的列表。

如果这些信息不充分,请告诉我

到目前为止,我已经尝试打印每个语句,将 for i in range(0, 5) 更改为 for i in range(len(useridlist))for i in useridlist,将它们全部合并为 1 和 2 for 循环并在 Python IDLE 环境中运行每个语句。

错误是conversionToUsername(有时是conversionToDiscriminator)行在特定数量的尝试后总是返回KeyError。当我将请求发送更改为每 5 秒发送一次时,它在 3 个请求后显示错误。当我将其更改为 10 秒时,它在 5 个请求后显示错误。但是每当我刷新页面时总是会出现错误。

有没有人知道如何解决这个问题,或者我做错了什么?

【问题讨论】:

  • 我找到了问题,而不是解决方案。它的 Discord 速率限制......

标签: python json python-requests discord


【解决方案1】:

所以我找到了解决方案。我没有通过 discord API 查找每个用户的用户名并面临速率限制,而是使用用户名保存了用户的 ID,因此我不必每次都向 discord 发送请求:D

【讨论】:

    猜你喜欢
    • 2016-03-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-23
    • 1970-01-01
    • 2021-12-04
    • 2019-10-04
    • 2012-07-23
    相关资源
    最近更新 更多