首页 > 解决方案 > 树莓派 3 上的 Pymongo 等待太多以引发错误

问题描述

我在树莓派 3 上遇到了 pymongo 的问题。问题是当我正常运行脚本时(我的意思是,我有互联网连接和数据库连接,所以在数据库上写入没有问题)我断开了 wi-fi 或以太网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()

标签: python-2.7pymongoraspberry-pi3

解决方案


推荐阅读