Убить питона фоновый процесс gitlab-ci - PullRequest
2 голосов
/ 14 марта 2019

Я пытаюсь уничтожить задание Python, запущенное в фоновом режиме в альпийском докере в 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, поскольку задание никогда не заканчивается.Однако, кажется, работает нормально, когда я запускаю команды локально

1 Ответ

2 голосов
/ 15 марта 2019

Наконец-то нашли решение:
- Сначала добавьте signal.signal(signal.SIGINT, quit_gracefully) как указано здесь .
- Затем добавьте команду wait после уничтожения:

COVERAGE_FILE=.coverage.test coverage run test.py &
TEST_PID=$!
kill -SIGINT ${TEST_PID}
wait
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...