示例#1
0
def test_iterate_tarfile(alert_tarball):
    iterator = iterate_tarfile(alert_tarball)
    i = 0
    for a in iterator:
        i += 1

    assert i == 2567
def read_alerts(filepath: str, q: queue.Queue, read_max:int=-1) -> None:
    iterator = iterate_tarfile(filepath)
    n_read = 0
    for alert in iterator:
        q.put(alert)
        logging.debug(f"putting into q: {alert.candidate_id}")
        n_read += 1
        if read_max > 0 and n_read >= read_max:
            break
    logging.debug(f"file queue complete, exiting")
    q.close()
async def read_alerts(filepath: str,
                      q: asyncio.Queue,
                      waiter: asyncio.Event,
                      read_max: int = -1) -> None:
    iterator = iterate_tarfile(filepath)
    n_read = 0
    for alert in iterator:
        await q.put(alert)
        n_read += 1
        if read_max > 0 and n_read >= read_max:
            break
    waiter.set()
示例#4
0
 async def tarfile_to_queue() -> None:
     n = 0
     for alert in iterate_tarfile(tarfile_path):
         logger.info("scanned alert %s", alert.candidate_id)
         if skip_existing:
             if self.index.get_url(alert.candidate_id) is not None:
                 logger.info("alert is already stored, skipping it")
                 continue
         n += 1
         if limit is not None and n > limit:
             logger.info("tarfile limit reached")
             break
         await upload_queue.put(alert)
         await asyncio.sleep(0)  # Yield to the scheduler.
     tarfile_read_done.set()
     logger.info("done processing tarfile")
示例#5
0
async def upload_and_download():
    filepath = "testdata/alertfiles/ztf_public_20210120.tar.gz"
    bucket = "ztf-alert-archive-prototyping-tmp"
    bs = Blobstore(bucket)
    iterator = iterate_tarfile(filepath)

    tasks = []
    for alert in iterator:
        print(f"file read: {alert.candidate_id}")
        tasks.append(bs.upload_alert_async(alert))

    urls = await asyncio.gather(*tasks)
    tasks = []
    for url in urls:
        print(f"uploaded to: {url}")
        tasks.append(bs.download_alert_async(url))

    downloads = await asyncio.gather(*tasks)
    for download in downloads:
        print(f"downloaded: {download.candidate_id}")