Exemple #1
0
def application(environ, start_response):
    """Do Fun things"""
    form = parse_formvars(environ)
    cb = form.get("callback", None)
    huc12 = form.get("huc12", "000000000000")[:12]
    mode = form.get("mode", "daily")
    fmt = form.get("format", "json")

    if fmt == "json":
        headers = [("Content-Type", "application/vnd.geo+json")]
    elif fmt == "xlsx":
        headers = [
            ("Content-Type", EXL),
            ("Content-disposition", f"attachment; Filename=dep{huc12}.xlsx"),
        ]
    start_response("200 OK", headers)

    mckey = f"/geojson/huc12_events/{huc12}/{mode}/{fmt}"
    mc = Client(["iem-memcached", 11211])
    res = mc.get(mckey)
    if res is None:
        res = do(huc12, mode, fmt)
        if fmt == "xlsx":
            mc.close()
            return [res]
        mc.set(mckey, res, 15)
    else:
        res = res.decode("utf-8")
    mc.close()
    if cb is not None:
        res = f"{cb}({res})"
    return [res.encode("ascii")]
Exemple #2
0
def application(environ, start_response):
    """Do Fun things"""
    headers = [("Content-Type", "application/vnd.geo+json")]
    start_response("200 OK", headers)
    form = parse_formvars(environ)
    cb = form.get("callback", None)
    domain = form.get("domain", None)
    ts = datetime.datetime.strptime(form.get("date", "2015-05-05"), "%Y-%m-%d")
    ts2 = None
    if form.get("date2", None) is not None:
        ts2 = datetime.datetime.strptime(form.get("date2"), "%Y-%m-%d")

    tkey = "" if ts2 is None else ts2.strftime("%Y%m%d")
    dkey = "" if domain is None else domain
    mckey = f"/geojson/huc12/{ts:%Y%m%d}/{tkey}/{dkey}"
    mc = Client(["iem-memcached", 11211])
    res = mc.get(mckey)
    if res is None:
        res = do(ts, ts2, domain)
        try:
            # Unknown BrokenPipeError
            mc.set(mckey, res, 3600)
        except Exception as exp:
            print(exp)
    else:
        res = res.decode("utf-8")
    mc.close()
    if cb is not None:
        res = f"{cb}({res})"
    return [res.encode("ascii")]
Exemple #3
0
def application(_environ, start_response):
    """Do Fun things"""
    headers = [("Content-Type", "application/vnd.geo+json")]
    start_response("200 OK", headers)
    mckey = "/geojson/huc12.geojson"
    mc = Client(["iem-memcached", 11211])
    res = mc.get(mckey)
    if res is None:
        res = do()
        mc.set(mckey, res, 86400)
    else:
        res = res.decode("utf-8")
    mc.close()
    return [res.encode("ascii")]
Exemple #4
0
def application(environ, start_response):
    """Do Fun things"""
    headers = [("Content-Type", "application/vnd.geo+json")]
    start_response("200 OK", headers)
    form = parse_formvars(environ)
    cb = form.get("callback", None)
    huc12 = form.get("huc12", "000000000000")[:12]
    mode = form.get("mode", "daily")

    mckey = "/geojson/huc12_events/%s/%s" % (huc12, mode)
    mc = Client(["iem-memcached", 11211])
    res = mc.get(mckey)
    if res is None:
        res = do(huc12, mode)
        mc.set(mckey, res, 15)
    else:
        res = res.decode("utf-8")
    mc.close()
    if cb is not None:
        res = "%s(%s)" % (cb, res)
    return [res.encode("ascii")]
Exemple #5
0
def main(environ):
    """Do something fun"""
    form = parse_formvars(environ)
    year = form.get("year", 2015)
    month = form.get("month", 5)
    day = form.get("day", 5)
    year2 = form.get("year2", year)
    month2 = form.get("month2", month)
    day2 = form.get("day2", day)
    scenario = int(form.get("scenario", 0))
    v = form.get("v", "avg_loss")
    huc = form.get("huc")

    ts = datetime.date(int(year), int(month), int(day))
    ts2 = datetime.date(int(year2), int(month2), int(day2))
    mckey = "/auto/map.py/%s/%s/%s/%s/%s" % (
        huc,
        ts.strftime("%Y%m%d"),
        ts2.strftime("%Y%m%d"),
        scenario,
        v,
    )
    if form.get("overview"):
        mckey = "/auto/map.py/%s/%s" % (huc, form.get("zoom"))
    mc = Client(["iem-memcached", 11211])
    res = mc.get(mckey)
    if res is None:
        # Lazy import to help speed things up
        if form.get("overview"):
            res, do_cache = make_overviewmap(form)
        else:
            res, do_cache = make_map(huc, ts, ts2, scenario, v, form)
        sys.stderr.write("Setting cache: %s\n" % (mckey,))
        if do_cache:
            mc.set(mckey, res, 3600)
    mc.close()
    return res
Exemple #6
0
 def _connect(self, host, port, func):
     client = Client((host, port))
     try:
         self.output = func(client)
     finally:
         client.close()