#python #api #flask #heroku
Вопрос:
Всем привет, я недавно создал api веб-скрейпинга, который возвращает мне некоторый URL-адрес, и это совершенно нормально, но у меня есть некоторые проблемы, с которыми я сталкиваюсь:-
- Требуется по крайней мере 5-10 секунд, чтобы показать результаты пользователю.
- Иногда приложение завершается неудачно, так как в нем указано время ожидания запроса.(Используя heroku для развертывания) вот мой код:-
import flask from flask import request from selenium import webdriver import os from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC app = flask.Flask(__name__) @app.route('/', methods=['GET']) def home(): url = request.args['url'] mobile_emulation = { "deviceName": "iPhone 6/7/8" } op = webdriver.ChromeOptions() op.add_experimental_option("mobileEmulation", mobile_emulation) op.binary_location = os.environ.get("GOOGLE_CHROME_BIN") op.add_argument("--headless") op.add_argument("--no-sandbox") op.add_argument("--disable-dev-sh-usage") driver = webdriver.Chrome(executable_path = os.environ.get("CHROMEDRIVER_PATH"),chrome_options=op) driver.get(url) driver.implicitly_wait(29) driver.refresh() element = WebDriverWait(driver, 29).until( EC.presence_of_element_located((By.XPATH, '//video[@class="video-stream html5-main- video"]'))) video_source = element.get_attribute('src') return video_source if __name__ == "__main__": app.run(debug=True)
Комментарии:
1. Я не знаю, как вы можете сократить затраченное время, но ошибка тайм-аута вашего запроса может быть решена, если вы используете flask-socetIO.