Changeset 8026


Ignore:
Timestamp:
06/21/19 13:33:41 (6 months ago)
Author:
alexander
Message:

Updating ewave to handle multiple waveservers

Location:
trunk/python/ewave_plotting
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/python/ewave_plotting/ewave_api.py

    r8014 r8026  
    7474class GetRESTData(Resource): 
    7575    def get(self, request_string): 
     76        host = WAVESERVER_HOST 
     77        port = WAVESERVER_PORT 
     78        hosts = [] 
     79        ports = [] 
     80 
     81        if isinstance(host, list): 
     82            # check to see if num of hosts is num of ports 
     83            if not isinstance(port, list): 
     84                hosts.append(host[0]) 
     85                ports.append(port) 
     86            elif (len(host) != len(port)): 
     87                # just use the first item in each list: 
     88                hosts.append(host[0]) 
     89                ports.append(port[0]) 
     90            else: 
     91                for hst in host: 
     92                    hosts.append(hst) 
     93                for prt in port: 
     94                    ports.append(prt) 
     95        elif isinstance(port, list): 
     96            # in this case, a single host is given with multiple ports 
     97            # loop over given ports and check single host at all ports 
     98            for prt in port: 
     99                hosts.append(host) 
     100                ports.append(prt) 
     101        else: 
     102            # here, we believe host and port are both single strings: 
     103            hosts.append(host) 
     104            ports.append(port) 
     105 
     106        print('Configured host: {} conf. port: {}'.format(host, port)) 
     107        print('Using hosts: {} ports: {}'.format(hosts, ports)) 
     108 
    76109        args = parser.parse_args() 
    77110        network = args['net'] 
     
    102135        else: 
    103136            outputFormat = 'png'  # default 
    104         # check if we can make a connection to (addr, port) before 
    105         # setting up client: 
    106         s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 
    107         errNo = s.connect_ex((WAVESERVER_HOST, WAVESERVER_PORT)) 
    108         if errNo is not 0: 
    109             error('Error when attempting to connect: {}' 
    110                   .format(os.strerror(errNo))) 
     137        i = 0 
     138        for hst in hosts: 
     139            prt = ports[i] 
     140            # check if we can make a connection to (addr, port) before 
     141            # setting up client: 
     142            s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 
     143            errNo = s.connect_ex((hst, prt)) 
     144            if errNo is not 0: 
     145                error('Error when attempting to connect: {}' 
     146                      .format(os.strerror(errNo))) 
     147                s.close() 
     148                if (i == (len(hosts) - 1)): 
     149                    abort(500) 
     150                else: 
     151                    i += 1 
     152                    continue 
    111153            s.close() 
    112             abort(500) 
    113         s.close() 
    114         client = Client(WAVESERVER_HOST, WAVESERVER_PORT) 
    115         st = client.get_waveforms(network, station, location, channel, 
    116                                   starttime, endtime) 
     154 
     155            client = Client(hst, prt) 
     156            if client.get_availability(network, station, location, channel): 
     157                st = client.get_waveforms(network, station, location, channel, 
     158                                          starttime, endtime) 
     159                break 
     160            else: 
     161                i += 1 
     162                if i == len(hosts): 
     163                    # this means we've exhausted the list of waveservers 
     164                    # without finding the data, abort 
     165                    error('Unable to find data for {}.{}.{}.{} on any of \ 
     166                          of provided waveservers'.format(network, station, 
     167                                                          location, channel)) 
     168                    abort(404) 
     169                continue 
     170 
    117171        if st.count() == 0: 
    118172            abort(404) 
     
    190244                else: 
    191245                    mxIndex = tr.data.argmax() 
    192                 # print('maximum value: {} max index: {}'. 
    193                 #      format(mxVal, mxIndex)) 
     246                print('maximum value: {} max index: {}'. 
     247                      format(mxVal, mxIndex)) 
    194248                mxFrac = mxIndex/(len(tr)) 
    195249                mxPos = mxFrac * (end - start) 
  • trunk/python/ewave_plotting/settings.py

    r8017 r8026  
    6060                if isinstance(settings[k], str): 
    6161                    settings[k] = bytes(settings[k], encoding='ascii') 
     62                elif isinstance(settings[k], list): 
     63                    for setting in settings[k]: 
     64                        if isinstance(setting, str): 
     65                            setting = bytes(setting, encoding='ascii') 
    6266 
    6367 
Note: See TracChangeset for help on using the changeset viewer.