Подключение к большому количеству одновременных потоковых конечных точек в Python - PullRequest
1 голос
/ 22 января 2020

Я пытался подключиться к большому количеству (где-то из тысяч) потоковых конечных точек http одновременно, используя мультиобъект pycurl. Кажется, это работает нормально, когда у меня небольшое количество потоков, однако, когда я пытаюсь подключить большее количество конечных точек, возникает большая задержка во времени установки, и иногда кажется, что конечные точки не читаются во всем сообщении. Все конечные точки отправляют объект json каждые 5 секунд, который мне затем нужно обработать. Мой текущий код выглядит так, когда некоторые имена переменных меняются более обобщенно c.

m = pycurl.CurlMulti()

for connection_num in range(1, num_connections):
    conn = pycurl.Curl()
    conn_fuel.setopt(pycurl.URL, 'url/{}'.format(connection_num))
    conn_fuel.setopt(pycurl.WRITEFUNCTION, on_receive_foo)
    m.add_handle(conn)

while 1:
    ret, num_handles = m.perform()
    time.sleep(0.1)

Я попытался установить MAX_CONCURRENT_STREAMS, используя setopt, как это в случае проблемы, но это возвращает ошибку, в которой говорится, что атрибут не существует.

m.setopt(pycurl.M_MAX_CONCURRENT_STREAMS, 6000)

Есть ли более быстрый или лучший способ получения соединений с мультиобъектом Pycurl или я трачу свое время и должен искать что-то еще?

Я все еще очень плохо знаком с соединениями и особенно плохо знаком с потоковой передачей и т.п., поэтому извините, если есть очевидный ответ.

...