Files
presentations/2026/celery2/slides/02-sequence.md
T
2026-09-24 16:39:17 +02:00

84 lines
3.2 KiB
Markdown

<div data-mermaid class="r-stretch">
<script type="text/mermaid">
%%{init: {'theme': 'light', 'themeVariables': { 'darkMode': false }}}%%
sequenceDiagram
actor Web Browser
participant Django
future participant Queue
future participant Django-Thread
Web Browser->>+Django: GET /progress
create participant Django-Thread
Django->>+Django-Thread: Create thread
create participant Queue
Django-Thread-->>Queue: Create queue
Django-Thread-->>Django: <<[Queue]>>
Django-Thread->>+RabbitMQ: Subscribe
Django-Thread-)+Queue: <<current celery tasks>>
par RabbitMQ Listen Thread
loop RabbitMQ Communication
RabbitMQ-)Django-Thread: <<event>>
Django-Thread->>Queue: <<event>>
end
loop heartbeat
Django-Thread->>Queue: <<event>>
end
and Django SSE Thread
loop SSE Communication
Django->>Queue: queue.get()
Queue-->>Django: <<event>>
deactivate Queue
Django->>Web Browser: <<event>>
end
end
deactivate Django
deactivate Django-Thread
</script>
</div>
---
<!--Client leaves-->
<div data-mermaid class="r-stretch">
<script type="text/mermaid">
%%{init: {'theme': 'light', 'themeVariables': { 'darkMode': false }}}%%
sequenceDiagram
actor Web Browser
participant Django
future participant Queue
future participant Django-Thread
Web Browser->>+Django: GET /progress
create participant Django-Thread
Django->>Django-Thread: Create thread
create participant Queue
Django-Thread-->>Queue: Create queue
Django-Thread-->>Django: <<[Queue]>>
Django-Thread->>+RabbitMQ: Subscribe
Django-Thread-)Queue: <<current celery tasks>>
par RabbitMQ Listen Thread
loop RabbitMQ Communication
RabbitMQ-)Django-Thread: <<event>>
Django-Thread->>Queue: <<event>>
break Queue is full
Django-Thread-xQueue: <<event>>
Django-Thread-xDjango-Thread: Kill self
destroy Django-Thread
Django-Thread-xDjango-Thread:
end
end
and Django SSE Thread
loop SSE Communication
Django->>Queue: queue.get()
Queue-->>Django: <<event>>
Django->>Web Browser: <<event>>
break Timeout while waiting for messages
destroy Web Browser
Django-xWeb Browser: Close connection
Deactivate Django
destroy Queue
Django-xQueue: garbage collector
end
end
end
</script>
</div>