Python 不和谐的、急促的、阻塞的

Python 不和谐的、急促的、阻塞的,python,reddit,praw,discord.py,Python,Reddit,Praw,Discord.py,所以我在python上编写discord机器人,我想做一个后台任务,检查subreddit是否有新的提交,如果有一定的天赋,发布它。但是,当我试图启动我的机器人时,它以前工作得很好,它只是在等待一些东西,却没有启动。我该怎么办 async def reddit_task(): await bot.wait_until_ready() start_time = time.time() reddit = praw.Reddit(different ke

所以我在python上编写discord机器人,我想做一个后台任务,检查subreddit是否有新的提交,如果有一定的天赋,发布它。但是,当我试图启动我的机器人时,它以前工作得很好,它只是在等待一些东西,却没有启动。我该怎么办

async def reddit_task():
        await bot.wait_until_ready()
        start_time = time.time()
        reddit = praw.Reddit(different keys)
        subreddit = reddit.subreddit('certain subreddit')
        for submission in subreddit.stream.submissions():
            if submission.created_utc > start_time:
                if submission.link_flair_text == 'certain flair':
                    em = discord.Embed(title=submission.title+'\n'+submission.shortlink)
                    if len(submission.preview) > 1:
                            em.set_image(url=submission.preview['images'][0]['source']['url'])
                    await bot.send_message(discord.Object(id='my channel id'), embed=em)

            else:
                pass

if __name__ == "__main__":
    for extension in startup_extensions:
        try:
            bot.load_extension(extension)
        except Exception as e:
            exc = '{}: {}'.format(type(e).__name__, e)
            print('Failed to load extension {}\n{}'.format(extension, exc))
    bot.loop.create_task(reddit_task())
    bot.run(config.bot_beta_token)

我也遇到了这个问题,因为
subreddit.stream.submissions()
正在阻止for循环。因此,我通过使用无限循环和subreddit.stream.submissions(pause\u after=0)解决了这个问题,因此如果没有新帖子,它将返回
None
,然后等待60秒再检查

async def reddit_task():
    await client.wait_until_ready()
    start_time = time.time()

    reddit = praw.Reddit("<client_stuff>")
    subreddit = reddit.subreddit("<some_subreddit>")
    submissions = subreddit.stream.submissions(pause_after=0)

    while not client.is_closed:
        submission = next(submissions)

        if submission is None:
            # Wait 60 seconds for a new submission
            await asyncio.sleep(60)

        elif submission.created_utc > start_time:
            <do_stuff_with_submission>
async def reddit_task():
等待客户端。等待,直到准备就绪()
开始时间=time.time()
reddit=praw.reddit(“”)
subreddit=reddit.subreddit(“”)
submissions=subreddit.stream.submissions(在=0后暂停)
而不是client.u关闭时:
提交=下一次(提交)
如果没有提交:
#等待60秒,等待新提交
等待异步睡眠(60)
elif submission.created_utc>开始时间: