Я пишу сценарий 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 потоков? Нужно ли обновлять уровни? Спасибо за ваши предложения.