Python webscraper работает непоследовательно в агенте SQL Server

#python #sql-server #ssis #selenium-chromedriver

Вопрос:

Я разработал веб-крапер на python. Это и есть код:

 
import sys
from selenium import webdriver
import time
from selenium.webdriver.support.select import Select
from selenium.webdriver.common.keys import Keys
import datetime
from datetime import datetime
import pandas as pd
from bs4 import BeautifulSoup


option = webdriver.ChromeOptions()
prefs = {"download.default_directory" : "C:\DownloadFolder\"}
option.add_experimental_option("prefs",prefs)
option.add_argument("--start-maximized");
chromedriver = "C:Scriptchromedriver.exe"
driver = webdriver.Chrome(executable_path=chromedriver, options=option)


BASE_URl = "https://www.mywebsite.com"
driver.get(BASE_URl)
time.sleep(3)

link2 = driver.find_element_by_xpath("mypath").text; 

link = driver.find_element_by_link_text(link2)
link.click()

time.sleep(10)

driver.quit()
sys.exit(0)
 

Я создал задание в агенте SQL Server, которое должно запускать этот веб-конструктор по определенному расписанию.
Проблема в том, что веб-крапер иногда работает правильно, а иногда выдает ошибку.
Когда он выдает ошибку, он сначала работает бесконечно.
Когда он не в состоянии завершить, возникает следующая ошибка:

Код: 0xC0029151 Источник: Скачать Описание задачи Выполнения процесса
: При выполнении «C:PythonPython392python.exe» «myscript.py» в «C:script «, Код завершения процесса был «1», в то время как ожидаемый был «0». Ошибка завершения DTExec: Выполнение пакета вернуло DTSER_FAILURE (1). Начало: 19:45:21 Окончание: 19:55:28 Прошло: 607,188 секунды. Не удалось выполнить пакет. Шаг не удался.

Мне непонятно, в чем проблема. Если я запускаю файл .py вручную, он всегда работает. Кроме того, я встроил файл .py в пакет служб SSIS, этот пакет использует агент SQL. Кроме того, когда я запускаю пакет вручную, он также работает на 100%.

Я думаю, что webscraper после завершения своей работы в первый раз закрывает не все используемые процессы.Я попытался добавить driver.close() перед driver.quit (), но это также не работает.

Кто-нибудь может мне помочь?

Комментарии:

1. Вам действительно нужно запускать это в службах SSIS? Делает ли он что-то, что необходимо использовать другой части пакета служб SSIS? В любом случае я предлагаю вам просмотреть журналы служб SSIS, чтобы попытаться найти более подробное сообщение об ошибке

Ответ №1:

Я добавил режим без головы в опцию, которая исправила проблему.