【问题标题】:Kill python background process gitlab-ci杀死python后台进程gitlab-ci
【发布时间】:2019-03-14 08:47:54
【问题描述】:

我正在尝试在 gitlab-ci 中的 Alpine docker 中终止在后台启动的 python 作业:

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】:

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

COVERAGE_FILE=.coverage.test coverage run test.py &
TEST_PID=$!
kill -SIGINT ${TEST_PID}
wait

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-30
    • 1970-01-01
    • 2017-06-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多