import concurrent.futures
import requests
import socket


def dialog_line_parse(url, text):
    """
    将数据输入模型进行分析并输出结果
    :param url: 模型url
    :param text: 进入模型的数据
    :return: 模型返回结果
    """

    response = requests.post(
        url,
        json=text,
        timeout=1000
    )
    if response.status_code == 200:
        return response.json()
    else:
        # logger.error(
        #     "【{}】 Failed to get a proper response from remote "
        #     "server. Status Code: {}. Response: {}"
        #     "".format(url, response.status_code, response.text)
        # )
        print("【{}】 Failed to get a proper response from remote "
            "server. Status Code: {}. Response: {}"
            "".format(url, response.status_code, response.text))
        print(text)
        return []

nums = 1000
url = "http://192.168.31.74:18001/predict"

input_data = []
for i in range(nums):
    input_data.append([url, {"texts": "User:你好\nAssistant:"}])

with concurrent.futures.ThreadPoolExecutor() as executor:
    # 使用submit方法将任务提交给线程池,并获取Future对象
    futures = [executor.submit(dialog_line_parse, i[0], i[1]) for i in input_data]

    # 使用as_completed获取已完成的任务,并获取返回值
    results = [future.result() for future in concurrent.futures.as_completed(futures)]

print(results)