У меня есть проект Django с приложением scrapy.
После того, как пользователь заполнил некоторые поля формы, я передаю заполненные данные пауку и сканирую несколько страниц.
Все работает как шарм, база данных заполняется. За исключением одной вещи.
Когда пользователь нажимает кнопку отправки, страница результатов становится пустой, поскольку паук не завершил сканирование, а данные отсутствуют в базе данных.
Как я могу, внутри вида Джанго, того же, что называл паука, узнать, что это сканирование завершено?
Вот мой код:
def search_process(request):
"""
Get data from the user and redirect him to results page.
"""
db = get_db()
process_number = request.POST.get('process_number', '').strip()
court = request.POST.get('court', '').strip()
start_crawl(process_number, court)
process = db.processes.find_one({
'process_number': process_number,
'court': court
})
context = {
'process': process,
}
return render(request, 'process_result.html', context)
def start_crawl(process_number, court):
"""
Starts the crawler.
Args:
process_number (str): Process number to be found.
court (str): Court of the process.
"""
runner = CrawlerRunner()
dispatcher.connect(reactor.stop, signal=signals.spider_closed)
process_info = runner.crawl(ProcessesSpider,
process_number=process_number,
court=court)
process_info.addBoth(lambda _: reactor.stop())