Discord.py 在异步环境中使用PRAW从reddit中选择随机帖子的更快方法

Discord.py 在异步环境中使用PRAW从reddit中选择随机帖子的更快方法,discord.py,python,asynchronous,optimization,praw,Discord.py,Python,Asynchronous,Optimization,Praw,有没有最快的方法可以使用PRAW从所选subreddit的“热门”类别中获取随机帖子,因为我的代码最多需要3秒钟。我尝试使用randint缩小范围,但它没有改变任何东西,也不理想,因为我希望它的范围更大 我用它来获取用户对subreddit的选择 到目前为止,我找到的最好方法是: async def on_message(message): reddit = connect_api() # Auth to the API sub = message.content

有没有最快的方法可以使用PRAW从所选subreddit的“热门”类别中获取随机帖子,因为我的代码最多需要3秒钟。我尝试使用
randint
缩小范围,但它没有改变任何东西,也不理想,因为我希望它的范围更大

我用它来获取用户对subreddit的选择

到目前为止,我找到的最好方法是:

async def on_message(message):
        reddit = connect_api() # Auth to the API
        sub = message.content[8:] # subreddit choice from user
        hot_results = reddit.subreddit(sub).hot()
        random_num = random.randint(1, 100)

        for i in range(0, random_num):
            random_post = next(x for x in hot_results if not x.stickied)
我还尝试将每一篇文章都添加到一个列表中,然后从中随机选择一篇文章,但显然这篇文章更长


internet连接应该很好,因为我在vps上运行它。

我在命令本身之外进行api连接,以便在首次打开bot时加载它(可能有助于提高速度)

这就是我随机选择的方式(我使用secrets模块而不是random,因为存在一些兼容性问题,但我认为它不会对命令的速度有太大的改变)

我已将每个请求计时到多个子项,从帖子加载“图片+标题”所需的时间最多为
.8秒
希望这能有所帮助

reddit = praw.Reddit(client_id='CLIENT ID',client_secret='CLIENT SECRET',user_agent='USER AGENT')
@client.command()
async def red(*args):
    posts = reddit.subreddit(args[0]).hot(limit=30)
    random_post_number = secrets.randbelow(30)
    for i,post in enumerate(posts):
        if i==random_post_number:
            await client.say(post.title)
            await client.say(post.url)