Pymongo на Raspberry Pi 3 слишком долго ждать, чтобы вызвать ошибку - PullRequest
0 голосов
/ 12 октября 2018

У меня проблема с pymongo на raspberry pi 3. Дело в том, что когда я запускаю скрипт нормально (я имею в виду подключение к интернету и соединение с базой данных, поэтому нет проблем с записью в базу данных) я отключаю Wi-Fiили ethernet от Raspberry, чтобы получить ошибку и обработать ее позже, но, когда я отключаю интернет, скрипт останавливается в команде pymongo "insert_one", как ожидание, пока он снова не подключится к Интернету ... так что ...Ошибка возникла несколько минут спустя, например, 25 минут, и это не очень хорошо для меня, потому что мне нужно немедленно получить ошибку, чтобы я мог сэкономить на файле csv.

from pymongo import MongoClient 
from pymongo import errors
from pymongo import client_options
from pymongo import settings

url     = 'emaweather.hopto.org'
port    = 27017
client_options.ClientOptions.server_selection_timeout = 1

try:        
    client = MongoClient(url, port)
    db = client['weather-mongo']
    print('Cliente: ' ,client)
    print('DB: ', db)
except errors.ConnectionFailure as e:
    print('Error: ', e)

def main():

  while True:

    try: 
        __readCSV()

        utc_now = pytz.utc.localize(datetime.datetime.utcnow())
        pst_now = utc_now.astimezone(pytz.timezone("America/Asuncion"))
        dateNowIsoFormat = pst_now.isoformat()
        print (dateNowIsoFormat)

        temperature,pressure,humidity = readBME280All()

        dbDataTemp = temperature
        print (dbDataTemp)

        dbDataHum = round(humidity,2)
        print (dbDataHum)

        dbDataPress = round(pressure,2)
        print (dbDataPress)

        dbData = {"date": dateNowIsoFormat, "temp": dbDataTemp, "hum": dbDataHum, "press": dbDataPress}
        db.data.insert_one(dbData)
        print('Writed on MongoDB')
        time.sleep(5)

    except errors.PyMongoError as error:
        print (error)

if __name__=="__main__":
   main()
...