mirror of
https://github.com/aljazceru/CTFd.git
synced 2025-12-19 06:54:20 +01:00
@@ -53,13 +53,12 @@ class EventManager(object):
|
|||||||
def subscribe(self, channel="ctf"):
|
def subscribe(self, channel="ctf"):
|
||||||
q = defaultdict(Queue)
|
q = defaultdict(Queue)
|
||||||
self.clients[id(q)] = q
|
self.clients[id(q)] = q
|
||||||
try:
|
|
||||||
while True:
|
|
||||||
try:
|
try:
|
||||||
# Immediately yield a ping event to force Response headers to be set
|
# Immediately yield a ping event to force Response headers to be set
|
||||||
# or else some reverse proxies will incorrectly buffer SSE
|
# or else some reverse proxies will incorrectly buffer SSE
|
||||||
yield ServerSentEvent(data="", type="ping")
|
yield ServerSentEvent(data="", type="ping")
|
||||||
|
while True:
|
||||||
|
try:
|
||||||
with Timeout(5):
|
with Timeout(5):
|
||||||
message = q[channel].get()
|
message = q[channel].get()
|
||||||
yield ServerSentEvent(**message)
|
yield ServerSentEvent(**message)
|
||||||
@@ -105,13 +104,12 @@ class RedisEventManager(EventManager):
|
|||||||
def subscribe(self, channel="ctf"):
|
def subscribe(self, channel="ctf"):
|
||||||
q = defaultdict(Queue)
|
q = defaultdict(Queue)
|
||||||
self.clients[id(q)] = q
|
self.clients[id(q)] = q
|
||||||
try:
|
|
||||||
while True:
|
|
||||||
try:
|
try:
|
||||||
# Immediately yield a ping event to force Response headers to be set
|
# Immediately yield a ping event to force Response headers to be set
|
||||||
# or else some reverse proxies will incorrectly buffer SSE
|
# or else some reverse proxies will incorrectly buffer SSE
|
||||||
yield ServerSentEvent(data="", type="ping")
|
yield ServerSentEvent(data="", type="ping")
|
||||||
|
while True:
|
||||||
|
try:
|
||||||
with Timeout(5):
|
with Timeout(5):
|
||||||
message = q[channel].get()
|
message = q[channel].get()
|
||||||
yield ServerSentEvent(**message)
|
yield ServerSentEvent(**message)
|
||||||
|
|||||||
Reference in New Issue
Block a user