杀死python后台进程gitlab-ci

问题描述 投票:2回答:1

我正试图在gitlab-ci中杀死一个在阿尔卑斯码头工作者的背景中开始的python作业:

蟒蛇

import asyncio

def main():
    loop = asyncio.get_event_loop()
    try:
        loop.run_forever()
    except KeyboardInterrupt:
        print('Stopping')


if __name__ == '__main__':
    main()

以下是运行的命令。

$ COVERAGE_FILE=.coverage.test coverage run test.py &
$ TEST_PID=$!
$ echo "${TEST_PID}"
26
$ kill -SIGINT ${TEST_PID}
$ jobs -l
[1]+  26 Running                 
$ kill -9 ${TEST_PID}
$ jobs -l
[1]+  26 Running                 

我永远不会看到.coverage.test因为工作永远不会完成。但是,当我在本地运行命令时似乎工作正常。

python docker gitlab-ci alpine
1个回答
2
投票

终于找到了解决方案: - 首先,如上所述添加signal.signal(signal.SIGINT, quit_gracefully) here。 - 然后在kill之后添加wait命令:

COVERAGE_FILE=.coverage.test coverage run test.py &
TEST_PID=$!
kill -SIGINT ${TEST_PID}
wait
© www.soinside.com 2019 - 2024. All rights reserved.