По запросу клиента вместо использования DynamoDB мы настроили mongoDB для экземпляра AWS EC2. Указанный экземпляр - m5a.large , который имеет 2 виртуальных ЦП и 8 ГБ памяти. Как указывалось ранее, на нем установлена mongoDB, а также Python и несколько библиотек для работы с mon go.
Проблема возникла, когда мы начали заполнять коллекцию mon go csv примерно 2-3 мельница записей и 14 столбцов. (Около 400 МБ). Хотя экземпляр не останавливается и не выдает ошибку OOM, сценарий, заполняющий коллекцию, останавливается на уровне около 90% записей, и никаких ошибок не возникает.
Я полагаю, что ему есть, что делать со сценарием, который мы используем, чтобы сделать это, и мне было интересно, если бы кто-то мог дать мне руку помощи, предоставив мне другой, более эффективный способ сделать это или подтвердив, что это просто ограничение памяти экземпляра.
import json
from mongoengine import *
from app.config import *
import pandas as pd
from app.model import Users
import time
conn = connect(
db=db_name,
username=username,
password=password,
authentication_source=authentication_source,
host=host,
)
if __name__ == "__main__":
t0 = time.time()
print("Time taken %8.8f seconds" % (time.time() - t0))
# CSV to JSON Conversion
df = pd.read_csv(
"csv.csv",
sep="|",
encoding="latin1",
)
df = df.rename(
columns={
"c1":"C1",
}
)
rows = df.to_json(orient="records")
rows = json.loads(rows)
Users.objects(cond=True).update(**{"cond": False})
for row in rows:
Users(row).register()
print("Time taken %8.8f seconds" % (time.time() - t0))
Примечание. Класс Users наследуется от DynamicDocument компании mongoengine