相关疑难解决方法(0)

我应该在一个程序中使用两个asyncio事件循环吗?

我想使用Python 3 asyncio模块来创建服务器应用程序.我使用主事件循环来监听网络,当收到新数据时,它会进行一些计算并将结果发送给客户端."做一些计算"是否需要新的事件循环?或者它可以使用主事件循环?

python event-loop python-3.4 python-asyncio

12
推荐指数
1
解决办法
6248
查看次数

我们如何调用正常的函数来预期协程?

考虑一个调用另一个协程的协程:

async def foo(bar):
     result = await bar()
     return result
Run Code Online (Sandbox Code Playgroud)

如果bar是协程,这可以正常工作.我需要做什么(即我需要将调用包装起来bar),以便这个代码在bar正常函数中做正确的事情?

async def即使它从不做任何异步(即从不使用await),也完全有可能定义一个协同程序.但是,问题是如何bar在代码中包装/修改/调用常规函数foo,bar以便等待.

python concurrency python-asyncio

10
推荐指数
1
解决办法
3780
查看次数

使用 Subprocess 来避免长时间运行的任务断开 discord.py bot 的连接?

我为我的 Discord 服务器创建了一个机器人,它转到给定 subreddit 的 Reddit API,并根据您输入的 subreddit 在 Discord 聊天中发布当天的前 10 个结果。它无视自己的帖子,实际上只发布图片和 GIF。Discord 消息命令看起来像这样:=get funny awww news programming发布每个 subreddit 的结果,因为它从 Reddit API (PRAW) 获取它们。这没有问题。我知道 bot 能够访问 API 并发布到 discord 中。

我添加了另一个命令=getshuffled,它将来自 subreddits 的所有结果放在一个大列表中,然后在发布之前将它们打乱。这对于最多约 50 个 subreddits 的请求非常有效。

这是我需要帮助的:

因为它可以是如此大的结果列表,来自 100 多个 subreddit 的 1000 多个结果,机器人在非常大的请求上崩溃。根据我昨天从我的问题中得到的帮助,我明白出了什么问题。机器人正在启动,它正在与我的 Discord 服务器通信,当我向它传递一个很长的请求时,它在 Reddit API 调用完成后停止与服务器通信的时间太长,并且 Discord 连接失败。

因此,我认为我需要做的是为转到 Reddit API 并提取结果的代码创建一个子进程(我认为这将使不和谐连接保持运行),然后将这些结果传回给机器人当它完成时......

或者...这是 Asyncio 可以自行处理的事情...

正如我所知道的那样,我在子流程调用方面遇到了困难。

基本上,我要么需要关于这个子流程技巧的帮助,要么需要知道我是否是个白痴,而 Asyncio 可以为我处理所有这些。我认为这只是“我不知道我不知道什么”的例子之一。

总结一下:该机器人运行良好,改组了少量 subreddit。它通过发送的参数(它们是 subreddits),获取每个帖子的信息,然后在将链接发布到不和谐之前进行洗牌。问题是当它是一个更大的大约 50+ 的 subreddit 集时。为了让它与更大的数量一起工作,我需要让 Reddit …

subprocess python-3.x python-asyncio discord.py

1
推荐指数
1
解决办法
3377
查看次数