使用dask发送并行API请求和错误处理

时间:2018-10-01 21:04:19

标签: python api parallel-processing dask

我最近开始使用dask。我想使用http请求将数据发送到REST API,该API返回一个json文件以验证数据上传是否成功。这是我的API调用函数:

def requestToAPI():
    headers={'Content-Type': 'application/json'}
    data = {
      "api_key" : "xxxxxxxxxxxxx",
      "attributes" : [
       {
         "external_id" : "user1",
         "app_id" : "xxxx-xxx-xxxxx-xxxx",
         "firs_name" : "user_firstname",
         "last_name" : "user_lastname_test"
       }
     ]
    }
    r = requests.post('https://abcdf.com/users/abdcgdu', headers=headers, data=json.dumps(data))
    return r.json()

我从下面的代码中得到了很多dask数据框块:

 rChunk=dd.from_pandas(pandaDataFrame, chunksize=1000)

如何使用dask并使用上述块(假设每个块都将更改为正确的json文件)将并行请求发送到API,并且如果请求之一失败/返回错误,则应进行正确的错误处理?

我尝试使用dask.delayed:

[rChunk中的块已延迟(requestToAPI)(chunk)]

但不确定如何进行正确的错误处理?

1 个答案:

答案 0 :(得分:0)

我不确定dask数据框是否是您的应用程序的最佳选择。您可能需要查看延迟的API,期货API或Bag API。

我可能会使用并发功能。

from dask.distributed import Client, as_completed

futures = client.map(process, requests)
for future in as_completed(futures):
    try:
        response = future.result()
        # do stuff with result
    except Exeption:
        # do stuff

http://docs.dask.org/en/latest/futures.html