Update Python tools
This commit is contained in:
@@ -139,6 +139,7 @@ def create_app(settings: Settings | None = None) -> Flask:
|
|||||||
"run.html",
|
"run.html",
|
||||||
run=run,
|
run=run,
|
||||||
children=store.children(run.id),
|
children=store.children(run.id),
|
||||||
|
output=read_run_output(run),
|
||||||
)
|
)
|
||||||
|
|
||||||
@app.post("/runs/<int:run_id>/cancel")
|
@app.post("/runs/<int:run_id>/cancel")
|
||||||
@@ -153,12 +154,15 @@ def create_app(settings: Settings | None = None) -> Flask:
|
|||||||
run = store.get(run_id)
|
run = store.get(run_id)
|
||||||
if run is None:
|
if run is None:
|
||||||
abort(404)
|
abort(404)
|
||||||
|
return {"output": read_run_output(run)}
|
||||||
|
|
||||||
|
def read_run_output(run) -> str:
|
||||||
if not run.log_path:
|
if not run.log_path:
|
||||||
return {"output": ""}
|
return ""
|
||||||
try:
|
try:
|
||||||
return {"output": Path(run.log_path).read_text(encoding="utf-8", errors="replace")}
|
return Path(run.log_path).read_text(encoding="utf-8", errors="replace")
|
||||||
except FileNotFoundError:
|
except FileNotFoundError:
|
||||||
return {"output": ""}
|
return ""
|
||||||
|
|
||||||
@app.get("/runs/<int:run_id>/artifacts")
|
@app.get("/runs/<int:run_id>/artifacts")
|
||||||
def run_artifacts(run_id: int):
|
def run_artifacts(run_id: int):
|
||||||
|
|||||||
@@ -1,21 +1,29 @@
|
|||||||
const output = document.querySelector("#run-output");
|
const output = document.querySelector("#run-output");
|
||||||
|
|
||||||
if (output) {
|
if (output) {
|
||||||
|
let refreshTimer;
|
||||||
const refresh = async () => {
|
const refresh = async () => {
|
||||||
const response = await fetch(output.dataset.outputUrl, { cache: "no-store" });
|
const response = await fetch(output.dataset.outputUrl, { cache: "no-store" });
|
||||||
if (response.ok) {
|
if (response.ok) {
|
||||||
output.textContent = (await response.json()).output;
|
const nextOutput = (await response.json()).output;
|
||||||
|
if (nextOutput !== output.textContent) {
|
||||||
|
output.textContent = nextOutput;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
const status = document.querySelector("#run-status");
|
const status = document.querySelector("#run-status");
|
||||||
if (status) {
|
if (status) {
|
||||||
const stateResponse = await fetch(status.dataset.stateUrl, { cache: "no-store" });
|
const stateResponse = await fetch(status.dataset.stateUrl, { cache: "no-store" });
|
||||||
if (stateResponse.ok) {
|
if (stateResponse.ok) {
|
||||||
status.textContent = (await stateResponse.json()).status;
|
const state = await stateResponse.json();
|
||||||
|
status.textContent = state.status;
|
||||||
|
if (state.status !== "queued" && state.status !== "running") {
|
||||||
|
window.clearInterval(refreshTimer);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
refresh();
|
refresh();
|
||||||
window.setInterval(refresh, 2000);
|
refreshTimer = window.setInterval(refresh, 2000);
|
||||||
}
|
}
|
||||||
|
|
||||||
const refreshArtifacts = async (container) => {
|
const refreshArtifacts = async (container) => {
|
||||||
|
|||||||
@@ -29,5 +29,5 @@
|
|||||||
<ul></ul>
|
<ul></ul>
|
||||||
</section>
|
</section>
|
||||||
<h2>Output</h2>
|
<h2>Output</h2>
|
||||||
<pre id="run-output" data-output-url="{{ url_for('run_output', run_id=run.id) }}"></pre>
|
<pre id="run-output" data-output-url="{{ url_for('run_output', run_id=run.id) }}">{{ output }}</pre>
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|||||||
Reference in New Issue
Block a user