<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def atlas_get_zonefiles( my_hostport, peer_hostport, zonefile_hashes, timeout=None, peer_table=None ):
 """ Given a list of zonefile hashes. go and get them from the given host. Update node health Return the newly-fetched zonefiles on success (as a dict mapping hashes to zonefile data) Return None on error. """


    if timeout is None:
        timeout = atlas_zonefiles_timeout()

    zf_payload = None
    zonefile_datas = {}

    host, port = url_to_host_port( peer_hostport )
    RPC = get_rpc_client_class()
    rpc = RPC( host, port, timeout=timeout, src=my_hostport )

    assert not atlas_peer_table_is_locked_by_me()

    # get in batches of 100 or less 
    zf_batches = []
    for i in xrange(0, len(zonefile_hashes), 100):
        zf_batches.append(zonefile_hashes[i:i+100])

    for zf_batch in zf_batches:
        zf_payload = None
        try:
            zf_payload = blockstack_get_zonefiles( peer_hostport, zf_batch, timeout=timeout, my_hostport=my_hostport, proxy=rpc )

        except (socket.timeout, socket.gaierror, socket.herror, socket.error), se:
            atlas_log_socket_error( "get_zonefiles(%s)" % peer_hostport, peer_hostport, se)

        except Exception, e:
            if os.environ.get("BLOCKSTACK_DEBUG") is not None:
                log.exception(e)

            log.error("Invalid zonefile data from %s" % peer_hostport)

        if zf_payload is None:
            log.error("Failed to fetch zonefile data from %s" % peer_hostport)
            atlas_peer_update_health( peer_hostport, False, peer_table=peer_table )
            
            zonefile_datas = None
            break

        if 'error' in zf_payload.keys():
            log.error("Failed to fetch zonefile data from %s: %s" % (peer_hostport, zf_payload['error']))
            atlas_peer_update_health( peer_hostport, False, peer_table=peer_table )

            zonefile_datas = None
            break

        # success!
        zonefile_datas.update( zf_payload['zonefiles'] )

    atlas_peer_update_health( peer_hostport, True, peer_table=peer_table )
    return zonefile_datas