PyMon go с многопроцессорным пулом в Python - PullRequest
0 голосов
/ 08 мая 2020

У меня проблема, над которой я борюсь неделями.

def doSomething(item):
   client = MongoClient(DB_CONNECTION_STRING, maxPoolSize=100000, connect=False)
   dbclient = client.mydb

   try:
       getAWebpage()
   except MyException as e:
      client.close()
      # I know that the recursion here could cause problems, but this is not the point
      doSomething(item)
   else:
      # do something with the web page and save in the DB
      dbclient.collection.insertone({...})
      ...
      client.close()

def singleTask(item):
   doSomething(item)
   time.sleep(0.3)

def startTask(list, threads=10):
   pool = ThreadPool(threads)
   results = pool.map(singleTask, list)
   pool.close()
   pool.join()

   return results

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

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

Любая помощь будет принята с благодарностью! Спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...