Discord.py 在异步环境中使用PRAW从reddit中选择随机帖子的更快方法
有没有最快的方法可以使用PRAW从所选subreddit的“热门”类别中获取随机帖子,因为我的代码最多需要3秒钟。我尝试使用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
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)