Skip to content

Commit e19887f

Browse files
committed
Squashed commit of the following:
commit 8720a6c6c6ef08ae5a134f544338393ba969f505 Author: Feodor Fitsner <[email protected]> Date: Wed Oct 25 12:29:04 2023 -0700 Cleanup commit d312eeb8f9661ee4e012e63c053989315e6bed7a Author: Feodor Fitsner <[email protected]> Date: Wed Oct 25 11:22:56 2023 -0700 Handler global commit bce5ccf680c063dd92bdce249383a88f60018895 Author: Feodor Fitsner <[email protected]> Date: Wed Oct 25 11:13:45 2023 -0700 blocking connection
1 parent 2060d43 commit e19887f

File tree

3 files changed

+41
-26
lines changed

3 files changed

+41
-26
lines changed

sdk/python/packages/flet-runtime/src/flet_runtime/app.py

Lines changed: 27 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -151,20 +151,8 @@ def __app_sync(
151151
else:
152152
logger.info(f"App URL: {conn.page_url}")
153153

154-
terminate = threading.Event()
155-
156-
def exit_gracefully(signum, frame):
157-
logger.debug("Gracefully terminating Flet app...")
158-
terminate.set()
159-
160-
signal.signal(signal.SIGINT, exit_gracefully)
161-
signal.signal(signal.SIGTERM, exit_gracefully)
162-
163154
logger.info("Connected to Flet app and handling user sessions...")
164155

165-
fvp = None
166-
pid_file = None
167-
168156
if (
169157
(
170158
view == AppView.FLET_APP
@@ -182,20 +170,33 @@ def exit_gracefully(signum, frame):
182170
)
183171
try:
184172
fvp.wait()
185-
except Exception as e:
173+
except:
186174
pass
187-
else:
175+
176+
close_flet_view(pid_file)
177+
conn.close()
178+
179+
elif not is_embedded():
188180
if view == AppView.WEB_BROWSER and url_prefix is None:
189181
open_in_browser(conn.page_url)
182+
183+
terminate = threading.Event()
184+
185+
def exit_gracefully(signum, frame):
186+
logger.debug("Gracefully terminating Flet app...")
187+
terminate.set()
188+
189+
signal.signal(signal.SIGINT, exit_gracefully)
190+
signal.signal(signal.SIGTERM, exit_gracefully)
191+
190192
try:
191193
while True:
192194
if terminate.wait(1):
193195
break
194196
except KeyboardInterrupt:
195197
pass
196198

197-
conn.close()
198-
close_flet_view(pid_file)
199+
conn.close()
199200

200201

201202
async def app_async(
@@ -251,9 +252,6 @@ def exit_gracefully(signum, frame):
251252

252253
logger.info("Connected to Flet app and handling user sessions...")
253254

254-
fvp = None
255-
pid_file = None
256-
257255
if (
258256
(
259257
view == AppView.FLET_APP
@@ -271,18 +269,22 @@ def exit_gracefully(signum, frame):
271269
)
272270
try:
273271
await fvp.wait()
274-
except Exception as e:
272+
except:
275273
pass
276-
else:
274+
275+
close_flet_view(pid_file)
276+
await conn.close()
277+
278+
elif not is_embedded():
277279
if view == AppView.WEB_BROWSER and url_prefix is None:
278280
open_in_browser(conn.page_url)
281+
279282
try:
280283
await terminate.wait()
281284
except KeyboardInterrupt:
282285
pass
283286

284-
await conn.close()
285-
close_flet_view(pid_file)
287+
await conn.close()
286288

287289

288290
def close_flet_view(pid_file):
@@ -370,6 +372,7 @@ def on_session_created(conn, session_data):
370372
uds_path,
371373
on_event=on_event,
372374
on_session_created=on_session_created,
375+
blocking=is_embedded(),
373376
)
374377
else:
375378
assert server
@@ -458,6 +461,7 @@ async def on_session_created(session_data):
458461
uds_path,
459462
on_event=on_event,
460463
on_session_created=on_session_created,
464+
blocking=is_embedded(),
461465
)
462466
else:
463467
assert server

sdk/python/packages/flet-runtime/src/flet_runtime/async_local_socket_connection.py

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,13 +31,15 @@ def __init__(
3131
uds_path: Optional[str] = None,
3232
on_event=None,
3333
on_session_created=None,
34+
blocking=False,
3435
):
3536
super().__init__()
3637
self.__send_queue = asyncio.Queue(1)
3738
self.__port = port
3839
self.__uds_path = uds_path
3940
self.__on_event = on_event
4041
self.__on_session_created = on_session_created
42+
self.__blocking = blocking
4143

4244
async def connect(self):
4345
self.__connected = False
@@ -48,7 +50,6 @@ async def connect(self):
4850
self.page_url = f"tcp://{host}:{port}"
4951
logger.info(f"Starting up TCP server on {host}:{port}")
5052
server = await asyncio.start_server(self.handle_connection, host, port)
51-
self.__server = asyncio.create_task(server.serve_forever())
5253
else:
5354
# UDS
5455
if not self.__uds_path:
@@ -62,6 +63,11 @@ async def connect(self):
6263
server = await asyncio.start_unix_server(
6364
self.handle_connection, self.__uds_path
6465
)
66+
67+
if self.__blocking:
68+
self.__server = None
69+
await server.serve_forever()
70+
else:
6571
self.__server = asyncio.create_task(server.serve_forever())
6672

6773
async def handle_connection(

sdk/python/packages/flet-runtime/src/flet_runtime/sync_local_socket_connection.py

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,12 +32,14 @@ def __init__(
3232
uds_path: Optional[str] = None,
3333
on_event=None,
3434
on_session_created=None,
35+
blocking=False,
3536
):
3637
super().__init__()
3738
self.__port = port
3839
self.__uds_path = uds_path
3940
self.__on_event = on_event
4041
self.__on_session_created = on_session_created
42+
self.__blocking = blocking
4143

4244
def connect(self):
4345
if is_windows() or self.__port > 0:
@@ -66,8 +68,11 @@ def connect(self):
6668
self.__sock.listen(1)
6769

6870
# start connect loop
69-
th = threading.Thread(target=self.__connection_loop, args=(), daemon=True)
70-
th.start()
71+
if self.__blocking:
72+
self.__connection_loop()
73+
else:
74+
th = threading.Thread(target=self.__connection_loop, args=(), daemon=True)
75+
th.start()
7176

7277
def __on_message(self, data):
7378
logger.debug(f"_on_message: {data}")

0 commit comments

Comments
 (0)