3 üyeli bir MongoDB çoğaltma kümesi ve içinde verileri depolayan bir Python uygulaması var.Pymongo AutoReconnect istisnası insert_many yöntemi ile nasıl kullanılır
def safe_mongo_call(method, num_retries, *args, **kwargs):
while True:
try:
return method(*args, **kwargs)
except (pymongo.errors.AutoReconnect,
pymongo.errors.ServerSelectionTimeoutError) as e:
if num_retries > 0:
logger.debug('Retrying MongoDB operation: %s', str(e))
num_retries -= 1
else:
raise
Emin olsa toplu kullanarak yazdığında bu özel durumları nasıl işleneceğini, mesela değilim şu şekildedir: bir ambalaj kağıdı ile tek bir belge ekler kullanırken
Ben pymongo en AutoReconnect
istisna işleyebilir insert_many
yöntemi. documentation'a göre, toplu yazma işlemleri atomik değildir, bu nedenle istisnalardan biri oluşsa bile, veritabanına yazılan bazı belgeler zaten başarılı olabilir. Bu nedenle, sarmalayıcı yöntemini yukarıdaki gibi tekrar kullanamıyorum.
Bu durumların üstesinden gelmenin en iyi yolu nedir? Bu durum için
İlgili: https : //gist.github.com/anthonywu/1696591 – TheChetan
Sağladığınız kod, temelde söz konusu makalede yazdığımla aynı şeyi yapar. Kullanım durumum farklıdır ve belgelerin bir kısmı veritabanına yazılabildiği için yeniden denenemeyen toplu işlemleri içerir. –