python - 杀死 python 后台进程 gitlab-ci

标签 python docker gitlab-ci alpine-linux

我正在尝试终止在 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,因为作业永远不会完成。 然而,当我在本地运行命令时,它似乎工作正常。

最佳答案

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

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

关于python - 杀死 python 后台进程 gitlab-ci,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55158251/

相关文章:

gitlab - 如何在具有多个服务的存储库中的 Gitlab 中设置 Web API 模糊测试?

Python lxml iterfind 带命名空间但前缀=无

python - 以元组为值对字典进行排序

python - 有没有一种很好的方法来拆分(可能)长的字符串而不用 Python 中的单词拆分?

docker - 以 root 身份在生产中运行 docker 容器是否安全?

php - 功能测试和与 GitLab 的持续集成

javascript - 使用 D3.js 图表表示 Python 生成的数据

angular - 更改从单个 nginx 服务器提供的多个 Angular 应用程序的顶级路由?

docker - 推送到端口转发的 docker 注册表

运行 helm 命令时出现 Gitlab 问题 - 错误 : unknown command "sh" for "helm"