Flask: Как завершить подпроцесс python - PullRequest
0 голосов
/ 17 июня 2020

У меня есть 4 паука Scrapy, которых я запускаю через Flask. Как одним нажатием кнопки выключить конкретного паука? (page_id имя какого-то паука)

начало:

<button id="scrape" class="btn btn-success mr-2">Scrape</button>

ОБНОВЛЕНИЕ: Я написал process.pid в mongodb и попытаюсь получить к нему доступ в kill_spider. Функция работает, но процесс продолжается.

flask:

@app.route('/<page_id>', methods=['GET', 'POST'])
def page(page_id):
    file_py = f"{page_id}.py"

    if request.method == 'POST':
        process = subprocess.Popen('python spiders/' + file_py, shell = True, stdout=subprocess.PIPE)
        mongo.db.processes.insert_one({'process': process.pid})
        process.wait()

mongodb:

enter image description here

стоп:

<a href="/kill_spider/wellness" class="btn btn-danger">Stop</a>

flask:

@app.route('/kill_spider/<page_id>')
def kill_spider(page_id):
    processes = [process for process in mongo.db.processes.find()]

    for i in processes:
        i = i['process']
        os.kill(i, signal.SIGTERM)
    mongo.db.processes.drop()
    return redirect('/' + page_id)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...