Skip to content

Commit 8ea822a

Browse files
committed
Added sigterm termination handling
1 parent 6d14d29 commit 8ea822a

File tree

2 files changed

+21
-2
lines changed

2 files changed

+21
-2
lines changed

main.py

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,8 @@
11
import asyncio
2+
import signal
3+
import types
4+
import datetime
5+
import sys
26

37
from src.job_manager import JobManager
48
from src.settings.settings import Settings
@@ -8,7 +12,21 @@
812
settings = Settings()
913
job_manager = JobManager(settings)
1014

11-
# # Main function
15+
def terminate(sigterm: signal.SIGTERM, frame: types.FrameType) -> None: # noqa: ARG001, pylint: disable=unused-argument
16+
17+
"""Terminate cleanly. Needed for respecting 'docker stop'.
18+
19+
Args:
20+
----
21+
sigterm (signal.Signal): The termination signal.
22+
frame: The execution frame.
23+
24+
"""
25+
26+
logger.info(f"Termination signal received at {datetime.datetime.now()}.") # noqa: DTZ005
27+
sys.exit(0)
28+
29+
# Main function
1230
async def main():
1331
await launch_steps(settings)
1432

@@ -33,4 +51,5 @@ async def main():
3351

3452

3553
if __name__ == "__main__":
54+
signal.signal(signal.SIGTERM, terminate)
3655
asyncio.run(main())

tests/jobs/test_removal_handler.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,4 +47,4 @@ async def test_get_handling_method(
4747
result = await handler._get_handling_method( # pylint: disable=W0212
4848
"A", affected_download
4949
)
50-
assert result == expected
50+
assert result == expected

0 commit comments

Comments
 (0)