Add a timeout to the FTP operation
[infoex-autowx.git] / infoex-autowx.py
index eb9bb7d59136b1d19dba877a754f81ee767b2699..2cfd46ea55c8b529205c633077512f5353bd9c4d 100755 (executable)
@@ -27,6 +27,7 @@ import csv
 import datetime
 import logging
 import os
 import datetime
 import logging
 import os
+import socket
 import sys
 import time
 import urllib3
 import sys
 import time
 import urllib3
@@ -43,7 +44,7 @@ import zeep
 import zeep.cache
 import zeep.transports
 
 import zeep.cache
 import zeep.transports
 
-__version__ = '3.4.3'
+__version__ = '3.4.4'
 
 LOG = logging.getLogger(__name__)
 LOG.setLevel(logging.NOTSET)
 
 LOG = logging.getLogger(__name__)
 LOG.setLevel(logging.NOTSET)
@@ -384,7 +385,10 @@ def main():
             return 1
 
         if not options.dry_run:
             return 1
 
         if not options.dry_run:
-            upload_csv(infoex['csv_filename'], infoex)
+            try:
+                upload_csv(infoex['csv_filename'], infoex)
+            except socket.timeout:
+                LOG.critical("FTP timed out")
 
     LOG.debug('DONE')
     return 0
 
     LOG.debug('DONE')
     return 0
@@ -484,14 +488,20 @@ def setup_infoex_counterparts_mapping(provider):
         iemap['tempPres'] = 'tempPres'
         iemap['tempPresUnit'] = 'tempPresUnit'
         iemap['tempMaxHour'] = 'tempMaxHour'
         iemap['tempPres'] = 'tempPres'
         iemap['tempPresUnit'] = 'tempPresUnit'
         iemap['tempMaxHour'] = 'tempMaxHour'
+        iemap['tempMaxHourUnit'] = 'tempMaxHourUnit'
         iemap['tempMinHour'] = 'tempMinHour'
         iemap['tempMinHour'] = 'tempMinHour'
+        iemap['tempMinHourUnit'] = 'tempMinHourUnit'
         iemap['hS'] = 'hS'
         iemap['hsUnit'] = 'hsUnit'
         iemap['baro'] = 'baro'
         iemap['rH'] = 'rH'
         iemap['windSpeedNum'] = 'windSpeedNum'
         iemap['hS'] = 'hS'
         iemap['hsUnit'] = 'hsUnit'
         iemap['baro'] = 'baro'
         iemap['rH'] = 'rH'
         iemap['windSpeedNum'] = 'windSpeedNum'
+        iemap['windSpeedUnit'] = 'windSpeedUnit'
         iemap['windDirectionNum'] = 'windDirectionNum'
         iemap['windGustSpeedNum'] = 'windGustSpeedNum'
         iemap['windDirectionNum'] = 'windDirectionNum'
         iemap['windGustSpeedNum'] = 'windGustSpeedNum'
+        iemap['dewPointUnit'] = 'dewPointUnit'
+        iemap['hn24AutoUnit'] = 'hn24AutoUnit'
+        iemap['hstAutoUnit'] = 'hstAutoUnit'
 
     return iemap
 
 
     return iemap
 
@@ -846,7 +856,7 @@ def upload_csv(path_to_file, infoex_data):
     with open(path_to_file, 'rb') as file_object:
         LOG.debug("uploading FTP file '%s'", infoex_data['host'])
         ftp = FTP(infoex_data['host'], infoex_data['uuid'],
     with open(path_to_file, 'rb') as file_object:
         LOG.debug("uploading FTP file '%s'", infoex_data['host'])
         ftp = FTP(infoex_data['host'], infoex_data['uuid'],
-                  infoex_data['api_key'])
+                  infoex_data['api_key'], timeout=10)
         ftp.storlines('STOR ' + path_to_file, file_object)
         ftp.close()
         file_object.close()
         ftp.storlines('STOR ' + path_to_file, file_object)
         ftp.close()
         file_object.close()