首页 > 解决方案 > 如何发送请愿书多线程 Python / Django

问题描述

我正在使用 Django,我需要发送很多请求,有什么方法可以在多线程上发送它?这是我的代码。

def send_ws_info(serializer, id):
    url = f'{settings.WS_URL}/notify/{id}'
    token, created = Token.objects.get_or_create(user__id=id)
    headers = {'Authorization': f'Token {token.key}'}
    requests.post(url=url, json=serializer, headers=headers)

标签: pythondjangodjango-rest-framework

解决方案


你可以使用线程池执行器

import requests
from concurrent.futures import ThreadPoolExecutor, as_completed

ids = [
1,
2,
3,
]

def send_ws_info(serializer, id):
    url = f'{settings.WS_URL}/notify/{id}'
    token, created = Token.objects.get_or_create(user__id=id)
    headers = {'Authorization': f'Token {token.key}'}
    requests.post(url=url, json=serializer, headers=headers)


processes = []
with ThreadPoolExecutor(max_workers=10) as executor:
    for id in ids :
        processes.append(executor.submit(send_ws_info, serializer, id))

for task in as_completed(processes):
    print(task.result())


推荐阅读