У меня есть 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:
стоп:
<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)