0

我正在使用 Huey/Hueyx 作为队列来缓冲我需要使用 pythons 请求库获取的资源。凭证(一个令牌)存储在 Redis 中,任务执行器调用该函数,获取资源,然后将其索引到弹性搜索。因为我需要请求数百万个不同的资源,而我的解决方案非常慢(每分钟大约 5k 个请求),所以队列很快备份并且性能受到影响。

def get_raw_resource(url, token, id):
        try:
                url = f"{url}/api/v2/{id}"

                headers = {
                    'Accept': "application/json",
                    'Authorization': f"Bearer {token}",
                    'Cache-Control': "no-cache"
                }
                response = requests.get(url, headers=headers) 
        [snip]


@res_q.task(delay=10, retries=3, retry_delay=180)
def get_resource_es(client_id, id):
        [snipped redis stuff]
        try:
                res = get_raw_resource(url, token, id)
                parsed = parse_res(res)
                es.index(index=es_index, body=parsed, id=id)
        except Exception as e:
                raise e

我的问题是:我怎样才能通过一些简单的步骤更快地完成整个考验?添加更多消费者始终是一种选择,但在探索其他选择之前,我现在不想这样做。我读过异步代码,但看起来它会使代码的复杂性增加四倍。另外,我对异步编程模型一无所知。

4

0 回答 0