Запустить селен параллельно / очистить несколько сайтов параллельно или по порядку? - PullRequest
0 голосов
/ 02 марта 2019

Я новичок в Django. В настоящее время я создаю веб-приложение, которое имеет форму, которая отправляет пользовательский ввод из формы в некоторые другие онлайн-инструменты, передает эти данные, а затем очищает результаты и отображает результаты в форме.таблицы в моем веб-приложении, например, так: https://i.imgur.com/AVj3cJJ.png

В итоге я использовал селен с PhantomJS, поскольку в инструментах есть объекты javascript, до этого я пользовался механическим суппортом, который работал хорошо, но застрял, когда получилк элементам javascript, следовательно, переключаясь на селен.

Я столкнулся с проблемой, в настоящее время я запускаю скребок с помощью созданной мной функции и вызываю его в моем представлении следующим образом:

if form.is_valid():
     crisporDF = crispor(form.cleaned_data['dnaSeq'], form.cleaned_data['species'])

Эта функция берет пользовательские данные и подает их в скребок, а затем создает таблицу, как видно на скриншоте выше, все работает нормально, однако у меня есть 5 инструментов, которые мне нужны для очистки и создания 5 таблиц, поэтому я 'мы создали другую похожую функцию для другого инструмента, и вот результат, который я получаю: https://i.imgur.com/qDXVR7s.png

Как вы можете видеть, это вроде работает, результаты вВторая таблица в порядке, но, используя те же входные данные пользователя, первая таблица не дает правильных результатов.

Я думаю?Это потому, что я создаю новый веб-драйвер в каждой функции, и я знаю, что Django является синхронной средой, но я также знаю, что есть способы запуска функций асинхронно.Я не знаю, почему это не дает правильные результаты для первого сайта больше.Но если моя логика верна, это должно быть потому, что один экземпляр веб-драйвера может быть вызван одновременно?Я пытался создать один веб-драйвер, но он, похоже, не работает.

Поэтому я спрашиваю:

  • как мне запустить селен параллельно?
  • Или как заставить селен перейти на первый сайт, запустить мою функцию и получить данные, затем перейти к следующему URL-адресу и запустить мою следующую функцию и получить данные?Так по порядку / в хронологическом порядке?Я понимаю, что это увеличит время загрузки страницы, но это не то, о чем я беспокоюсь, поскольку при обработке научных данных это может занять от нескольких секунд до даже часов, поэтому это не проблема.
  • Я понимаю, что существуют такие инструменты, как сельдерей, но поскольку время загрузки не является проблемой, я не возражаю против запуска процессов на переднем плане, будет ли вариант Multiprocess в Python вариант?например, создать экземпляр для каждого инструмента, например, 5 экземпляров веб-драйвера для каждого инструмента, получить данные, а затем объединить их для печати в виде таблиц на сайте?Это возможно?

Спасибо за вашу помощь!Если вам нужна дополнительная информация, пожалуйста, спросите!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...