Commit ad02e3d
committed
fix(social-algorithms): time out with a joined thread, not SIGALRM
`_execute_with_timeout` installed a `signal.SIGALRM` handler, and
`signal.signal` only works on the main thread. `run_async` hands `run` to a
worker thread via `asyncio.to_thread`, and `max_execution_time` defaults to
300.0, which selects the timeout path -- so the default configuration always
raised `ValueError: signal only works in main thread of the main interpreter`.
The same mechanism carried two more defects. `signal.alarm(int(...))`
truncates, and `alarm(0)` means cancel, so any budget under one second
disabled the timeout instead of tightening it. And `SIGALRM` does not exist
on Windows, where the default path raised `AttributeError`.
Run the call on a joined daemon thread instead. That works from any thread,
keeps sub-second budgets, and is portable. A timed-out worker is abandoned
rather than interrupted -- it is a daemon, so it cannot hold up interpreter
exit.
Closes kyegomez#20701 parent 99b4d14 commit ad02e3d
2 files changed
Lines changed: 44 additions & 14 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
1 | 2 | | |
2 | 3 | | |
3 | 4 | | |
| |||
287 | 288 | | |
288 | 289 | | |
289 | 290 | | |
290 | | - | |
| 291 | + | |
291 | 292 | | |
292 | | - | |
| 293 | + | |
| 294 | + | |
| 295 | + | |
| 296 | + | |
| 297 | + | |
| 298 | + | |
| 299 | + | |
| 300 | + | |
| 301 | + | |
| 302 | + | |
| 303 | + | |
293 | 304 | | |
294 | 305 | | |
295 | 306 | | |
296 | | - | |
297 | | - | |
298 | | - | |
299 | | - | |
300 | | - | |
301 | | - | |
302 | | - | |
303 | | - | |
304 | | - | |
305 | | - | |
306 | | - | |
307 | | - | |
| 307 | + | |
| 308 | + | |
| 309 | + | |
308 | 310 | | |
309 | 311 | | |
310 | 312 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
1 | 3 | | |
2 | 4 | | |
3 | 5 | | |
| |||
56 | 58 | | |
57 | 59 | | |
58 | 60 | | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
| 79 | + | |
| 80 | + | |
| 81 | + | |
| 82 | + | |
| 83 | + | |
| 84 | + | |
| 85 | + | |
| 86 | + | |
0 commit comments