python异步处理请求_python异步处理HTTP请求

我需要为django查询集的每个条目生成一个PDF报告。会有3万到4万个条目。在

PDF是通过外部API生成的。由于当前是按需生成的,因此这是通过HTTP请求/响应同步处理的。

对于这个任务,这是不同的,因为我认为我将使用django管理命令循环查询集并执行PDF生成。在

我应该遵循哪种方法来完成这项任务?我考虑了两种可能的解决方案,尽管我从未使用过这些技术:

1)Celery:将一个任务(具有不同负载的http请求)分配给一个worker,然后在任务完成后检索它。在

2)request-futures:以非阻塞方式使用请求。在

目标是并发使用API(例如,根据API可以处理的并发请求数,同时发送10或100个http请求)。在

有没有人在这里处理过类似的任务,并能就如何进行这项工作提出建议?在

下面是用multiprocessing进行的第一次尝试(注意:大多数代码都是重用的,而不是我自己编写的,因为我拥有了这个项目的所有权):

在class Checker(object):

def __init__(self, *args, **kwargs):

# ... various setup

# other methods

# .....

def run_single(self, uuid, verbose=False):

"""

run a single PDF generation and local download

"""

start = timer()

headers = self.headers

data, obj = self.get_review_data(uuid)

if verbose:

print("** Report: {} **".format(obj))

response = requests.post(

url=self.endpoint_url,

headers=headers,

data=json.dumps(data)

)

if verbose:

print('POST - Response: {} \n {} \n {} secs'.format(

response.status_code,

response.content,

response.elapsed.total_seconds())

)

run_url = self.check_progress(post_response=response, verbose=True)

if run_url:

self.get_file(run_url, obj,

你可能感兴趣的:(python异步处理请求)