"Не могу открыть новую тему" ошибки на Heroku - PullRequest
0 голосов
/ 03 апреля 2020

Я пишу сценарий Python для очистки веб-страниц и пытаюсь реализовать многопоточный подход для ускорения работы. Я использую ThreadPoolExecutor для установки максимального количества потоков.

from threading import current_thread
from concurrent.futures import ThreadPoolExecutor, as_completed

MAX_THREADS = 100

def process_user(user):
    # makes one or more network requests and returns the results
    return {"count": 123}

users = get_users_from_database() # gets user records from the database

with ThreadPoolExecutor(max_workers=MAX_THREADS) as executor:
    futures = [executor.submit(process_user, row) for row in users]
    batch = []
    for index, future in enumerate(as_completed(futures)):
        result = future.result()
        batch.append(result)

        # store full batch or when there are no more left to store...
        if (len(batch) >= BATCH_SIZE) or (index + 1 >= len(futures)):
            insert_users(batch) # stores in the database
            batch = []

Heroku говорит их бесплатный уровень dyno может работать до 256 потоков.

Однако, когда я запускаю сценарий на сервере Heroku бесплатного уровня, кажется, что он нормально работает с 10 потоками, но при попытке запустить с несколькими потоками сценарий просто запускается в «RuntimeError: невозможно запустить новый ошибки ". 1010 *

Есть ли возможность использовать более 10 потоков? Нужно ли обновлять уровни? Спасибо за ваши предложения.

1 Ответ

0 голосов
/ 03 апреля 2020

Кажется, была проблема с памятью. Масштабирование динамов позволяет использовать больше потоков.

...