杀死python后台进程gitlab-ci
Kill python background process gitlab-ci
我正在尝试终止在 gitlab 中的 Alpine docker 后台启动的 python 作业-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
,因为工作永远不会完成。
但是,当我在本地 运行 命令时,它似乎工作正常。
终于找到解决方案:
- 首先,如前所述添加 signal.signal(signal.SIGINT, quit_gracefully)
here.
- 然后在kill之后添加wait
命令:
COVERAGE_FILE=.coverage.test coverage run test.py &
TEST_PID=$!
kill -SIGINT ${TEST_PID}
wait
我正在尝试终止在 gitlab 中的 Alpine docker 后台启动的 python 作业-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
,因为工作永远不会完成。
但是,当我在本地 运行 命令时,它似乎工作正常。
终于找到解决方案:
- 首先,如前所述添加 signal.signal(signal.SIGINT, quit_gracefully)
here.
- 然后在kill之后添加wait
命令:
COVERAGE_FILE=.coverage.test coverage run test.py &
TEST_PID=$!
kill -SIGINT ${TEST_PID}
wait