Мне нужно проверить точность сервера mongodb. Я пытаюсь вставить последовательность данных, взять момент, и он был отправлен в базу данных, чтобы узнать, когда он был вставлен. Я пробовал это:
#!/usr/bin/python
from pymongo import Connection
from datetime import date, timedelta, datetime
class FilterData:
@classmethod
def setData(self, serialData):
try:
con = Connection('IP_REMOTE', 27017, safe=True)
db = con['resposta']
inoshare = db.resposta
inoshare.insert(serialData)
con.close()
except Exception as e:
print "Erro no filter data: ", e.message, e.args
obj = FilterData()
inicio = datetime.now()
termino = inicio + timedelta(seconds=10)
contador = 1
while inicio <= termino:
print contador, inicio.strftime('%d-%m-%Y %H:%M:%S')
pacote = {'contador':contador, 'datahora':$currentDate()}
obj.setData(pacote)
contador += 1
Но переменные mongodb (используя $) не распознаются в python. Как продолжить эту интеграцию?
Obs: IP_REMOTE = мой действительный IP на удаленном сервере
затем попытался следующие, но вставляет только одну запись.
#!/usr/bin/python
from pymongo import Connection
from datetime import date, timedelta, datetime
import time
class FilterData:
def __init__(self):
self.con = Connection('54.68.148.224', 27017, safe=True)
self.db = self.con['resposta']
self.inoshare = self.db.resposta
def setData(self, serialData):
try:
self.inoshare.update({}, serialData, upsert=True)
except Exception as e:
print "Erro no filter data: ", e.message, e.args
def desconect(self):
self.con.close()
obj = FilterData()
inicio = datetime.now()
termino = inicio + timedelta(seconds=30)
while inicio <= termino:
print inicio.strftime('%d-%m-%Y %H:%M:%S')
pacote = {'$currentDate': {'datahora': { '$type': 'date' }}}
obj.setData(pacote)
inicio = datetime.now()
time.sleep(1)
obj.desconect()
Я сделал это как указано, но удаленная база данных только вставлена в одну запись. Вам нужно вставить ту же сумму, поэтому я могу сравнить временную метку. Только тогда я узнаю, сколько времени потребуется банку для вставки кортежа @Neil – touchmx
@touchmx. Вы можете «обновить» несколько записей с помощью опции «multi», как описано в методе '.update()'. Возможно, вы недопонимаете, что '$ currentDate' делает. Обновленная временная метка будет отражать фактическое время, когда запись была обновлена. Если вы предоставили установленную дату от клиента, то ** все ** обновленные записи будут иметь одну и ту же метку времени. С '$ currentDate', то они, скорее всего, не будут. –