我有一个不平衡的机器人,需要扩展。 该机器人的主要功能是从第三方网站获取数据,并保留一个包含会员信息的数据库。 这两个操作非常耗时,我希望每个操作都有一个单独的工作程序/进程。
我的限制:
我一直在在线研究实现此目的的最佳方法,但是我进入了几种库/方式来实现这种解决方案。我有哪些选择以及它们的优缺点?
答案 0 :(得分:0)
由于来自主机的请求数量受到限制,因此我将首先尝试运行一个同步程序,并在分钟结束之前检查是否达到了限制。如果这样做的话,就不需要同时运行其他工人。但是,如果没有达到限制,那么我建议您同时使用asyncio
和aiohttp
来异步获取请求。关于如何开始使用这些库,有大量信息。
另一种选择是使用较旧的threading
模块(或在更高级别的用例中使用concurrent.futures
)。两种选择都有其优缺点。我要做的是首先尝试使用concurrent.futures
(即ThreadPoolExecutor
上下文管理器)模块,因为您只需添加一行代码即可。如果无法完成任务,请记住:如果需要,请使用asyncio
,如果必须,请使用threading
。这两个模块都易于使用和理解,但是它们确实需要遵循通用的结构,这意味着您很可能必须更改代码。