Как избежать опроса сервера для каждого отдельного результата - htmx

У меня есть 3 задачи django-celery, выполняющиеся независимо, каждая из них завершается в разное время и занимает от 20 до 45 секунд. Я могу опросить сервер через 3 разных hx-триггера, чтобы получить 3 разных результата по мере их поступления, однако это кажется лишней нагрузкой на сервер, так как я хотел бы опрашивать каждые 5 секунд.

В идеале я бы просто установил 1 hx-триггер, который опрашивает все 3 результата, а затем помещает результаты в их div'ы, когда они становятся доступными, но я не уверен, как этого добиться - я могу изменить front end, если это необходимо, чтобы сделать это возможным.

Если у вас есть одна конечная точка, которая может генерировать вывод для трех результатов, то вы можете использовать внеполосную замену, чтобы заменить их все одновременно. Вот пример https://codepen.io/jreviews/pen/bGYmQjx

<div hx-trigger="every 2s" hx-get="/poll" hx-swap="none"></div>

<div id="one"></div>
<div id="two"></div>
<div id="three"></div>

<script>
var start = Date.now();
function getTime() {
    return Math.floor((Date.now()-start)/1000);
}
</script>
<template url="/poll">
    <div id="one" hx-swap-oob="true">One ${getTime()}</div>
    <div id="two" hx-swap-oob="true">Two ${getTime()}</div>
    <div id="three" hx-swap-oob="true">Three ${getTime()}</div>
</template>

Здесь вы найдете больше информации об обмене oob https://htmx.org/attributes/hx-swap-oob/

Вернуться на верх