Логика повтора с concurrent.futures lib
import concurrent.futures
import pymongo
import tenacity
from tenacity import stop_after_attempt
def retry_error_callback(retry_state):
print("call when error throws ")
@tenacity.retry(stop=stop_after_attempt(2), retry_error_callback=retry_error_callback)
def sendFotaUpgradeMqttControlCommand(deviceIds):
print(deviceIds)
mongoClient = pymongo.MongoClient("mongdbAddress", port)
db = mongoClient["testDB"]
db.retryTest.insert({"retry": "success"})
def threadProcess():
deviceId = [100, 200, 300, 400 , 100, 200, 300, 400,100, 200, 300, 400,100, 200, 300, 400,100, 200, 300, 400]
with concurrent.futures.ProcessPoolExecutor() as executor:
for r in executor.map(sendFotaUpgradeMqttControlCommand, deviceId):
try:
print(r)
except Exception as exc:
print(exc)
def connctDB():
threadProcess()
if __name__ == '__main__':
connctDB()
Я сталкиваюсь с проблемой, указанной выше, когда я устанавливаю соединение с БД, он должен вызывать ошибку проверки, но в моем случае другой поток, также пытающийся подключиться к Db, даже 1-й поток не смог подключиться к БД.
Мое требование: он должен генерировать исключение, когда первый поток не смог подключить БД. А остальные потоки не должны обрабатываться.
пожалуйста помогите