【发布时间】:2021-01-12 17:58:10
【问题描述】:
我有一个 python 脚本,它使用 selenium 抓取网页并将数据发布到 Firebase 实时数据库。此脚本使用计划库每 X 小时运行一次。
在没有 Firebase 的情况下部署脚本,我没有遇到任何错误。使用 Firebase 代码部署脚本时,我在运行 heroku logs --tail 时收到以下消息:
2020-09-23T18:48:35.044206+00:00 heroku[web.1]:进程退出 状态 137 2020-09-23T18:48:35.091567+00:00 heroku[web.1]: 状态 从开始更改为崩溃 2020-09-24T00:26:53.135632+00:00 heroku[web.1]:状态从崩溃变为开始 2020-09-24T00:27:07.260119+00:00 heroku[web.1]:启动过程 命令
python scraper.py2020-09-24T00:28:07.677644+00:00 heroku[web.1]:错误 R10(启动超时)-> Web 进程绑定失败 在发射后 60 秒内到达 $PORT
在本地,该应用可与 Firebase 完美配合!
脚本:
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.ui import WebDriverWait as wait
import schedule
import time
import os
import firebase_admin
from firebase_admin import credentials
from firebase_admin import db
cred = credentials.Certificate('secret-file.json')
firebase_admin.initialize_app(cred, {
'databaseURL' : 'https://a-database-url.com/'
})
# Use Chrome in silent mode
op = webdriver.ChromeOptions()
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")
def job():
PATH = "C:\Program Files (x86)\chromedriver.exe"
# Heroku driver
driver = webdriver.Chrome(executable_path= os.environ.get("CHROMEDRIVER_PATH"), chrome_options=op)
driver.get("https://a-website.com")
print("Opening the browser")
try:
# Magic..
time.sleep(1)
# Magic..
time.sleep(3)
# More Magic..
driver.quit()
except:
driver.quit()
schedule.every(5).minutes.do(job)
while True:
schedule.run_pending()
time.sleep(1) # wait one minute
【问题讨论】:
-
“Web 进程未能在 60 秒内绑定到 $PORT”——您的脚本是否旨在侦听 HTTP / HTTPS 请求?
-
嗨,克里斯,不是特别是,还是您的意思是 driver.get(..url..) ?我将添加我的脚本