多个请求值的平均值

2024-05-14 03:29:46 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图找到一种方法,从一个函数中计算出4个请求值的平均值,这是我第一次尝试,我试图得到一个类,但我最终在如何调用多个请求的问题上陷入了圈圈,这样我就可以尽可能缩短得到该值的时间,我设法将值的总和存储在一个全局变量中,但无法返回该值或将其除以值的数目

import requests
import json
from collections import defaultdict
import threading

url = "https://www4.sii.cl/mapasui/services/data/mapasFacadeService/getPredioNacional"
headers = {
    'host':"www4.sii.cl",
    'cookie': "JSESSIONID=8A6FDE8962A11231DB70F9A259B2A669.mos05; AAGSID=8A6FDE8962A11231DB70F9A259B2A669.mos05",
    'pragma': "no-cache",
    'origin': "https://www4.sii.cl",
    'accept-encoding': "gzip, deflate, br",
    'accept-language': "en-US,en;q=0.8",
    'user-agent': "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:61.0) Gecko/20100101 Firefox/61.0",
    'content-type': "application/json",
    'accept': "application/json, text/plain, */*",
    'cache-control': "no-cache",
    'referer': "https://www4.sii.cl/mapasui/internet/",
    'connection': "keep-alive",
    'content-length':"448"
    }

a=0


def prom_val(mzn, pred):
    global a
    ndict = defaultdict(list)
    pl_a = '{"metaData":{"namespace":"cl.sii.sdi.lob.bbrr.mapas.data.api.interfaces.MapasFacadeService/getPredioNacional","conversationId":"UNAUTHENTICATED-CALL194.99.104.27","transactionId":"72030a64-b3e8-dc82-14cc-733564c821b7"},"data":{"predio":{"comuna":"2201","manzana":"%s","predio":"%s"},"servicios":[{"comuna":2201,"layer":"sii:BR_CART_ANTOFAGASTA_WMS","style":"PREDIOS_WMS_V0"},{"comuna":2201,"layer":"sii:BR_CART_AH_MUESTRAS","style":"AH_MUESTRA"}]}}' % (
    mzn, pred)
    try:
        req = requests.post(url, data=pl_a, headers=headers, timeout=30)
    except (requests.ConnectionError, requests.Timeout, requests.RequestException):
        print("no{}\n".format(mzn))
        try:
            req = requests.post(url, data=pl_a, headers=headers, timeout=30)
        except (requests.ConnectionError, requests.Timeout, requests.RequestException):
            print("no{}\n".format(mzn))
            try:
                req = requests.post(url, data=pl_a, headers=headers, timeout=30)
            except (requests.ConnectionError, requests.Timeout, requests.RequestException):
                print("no {}\n".format(mzn))
    text_req = req.text
    jdd = json.loads(text_req)
    ddd = jdd['data']
    vlrdd = ddd['datosCapas'][0]['datos'][2]['valor']
    vlr2 = vlrdd.replace('$','')
    vlr3 = vlr2.replace('.','')
    print(vlr3)
    a+=int(vlr3)
    print(a)
    return a

def prom(rol):
    rolsplit = rol.split("-")
    mzn = rolsplit[0]
    t1 = threading.Thread(target=prom_val, args=(mzn,'34'))
    t1.start()
    t2 = threading.Thread(target=prom_val, args=(mzn, '30'))
    t2.start()
    t3 = threading.Thread(target=prom_val, args=(mzn, '40'))
    t3.start()
    t4 = threading.Thread(target=prom_val, args=(mzn, '15'))
    t4.start()
    vall = a/4
    return vall


print(prom('1076-34'))

Tags: noimportjsonurldataclvalrequests