import fireworks.flask_site.app fireworks.flask_site.app.lp = LaunchPad.from_dict( json.loads(os.environ["FWDB_CONFIG"])) return app(*args, **kwargs) def parse_querystr(querystr, coll): # try to parse using `json.loads`. # validate as valid mongo filter dict try: d = json.loads(querystr) assert isinstance(d, dict) except: flash("`{}` is not a valid JSON object / Python dict.".format(querystr)) return {} try: h = coll.find_one(d) except: flash("`{}` is not a valid MongoDB query doc.".format(querystr)) return {} if WEBSERVER_PERFWARNINGS and not fwapp_util.uses_index(d, coll): flash("`{}` does not use a mongo index. " "If you expect to use this query often, add an index " "to the database collection " "to make it run faster.".format(querystr)) return d if __name__ == "__main__": app.run(debug=True, port=8080)
fw_report_data = fwr.get_stats(coll="fireworks", interval=interval, num_intervals=num_intervals, additional_query=app.BASE_Q) fw_report_text = fwr.get_stats_str(fw_report_data) wf_report_data = fwr.get_stats(coll="workflows", interval=interval, num_intervals=num_intervals, additional_query=app.BASE_Q_WF) wf_report_text = fwr.get_stats_str(wf_report_data) return render_template('report.html', **locals()) def bootstrap_app(*args, **kwargs): """Pass instead of `app` to a forking process. This is so a server process will re-initialize a MongoDB client connection after forking. This is useful to avoid deadlock when using pymongo with multiprocessing. """ import fireworks.flask_site.app fireworks.flask_site.app.lp = LaunchPad.from_dict( json.loads(os.environ["FWDB_CONFIG"])) return app(*args, **kwargs) if __name__ == "__main__": app.run(debug=True, port=8080)