使用 Supervisor 时,Selenium 无法在 celery 任务中访问 chrome

问题描述 投票:0回答:1

我有一个使用 Celery 作为任务队列的 Django 项目。该任务是通过 Selenium 运行 chromedriver 并从某些 URL 获取数据。像这样:

@shared_task(bind=True)
def task_one(self):
    options = Options()
    options.add_argument("--start-maximized")
    options.add_argument('--no-sandbox')
    options.add_argument("--disable-dev-shm-usage")
    driver = webdriver.Chrome(options=options)
    wait = WebDriverWait(driver, 20)
    action = ActionChains(driver)
    driver.get('https://somewhere.com')
    # do others

这个任务应该定期运行,因为我使用 celerybeat。

为了测试,我在两个终端中运行 celeryworker 和 celerybeat ,一切看起来都很好。 (celerybeat每20秒发送一次,worker运行Chrome并获取数据)

但是当我使用Supervisor时,工作人员出错并且无法访问Chrome。 (celerybeat 仍然运行良好,每 20 秒发送一次,但问题出在工人身上)

芹菜日志说:

'Message: session not created: Chrome failed to start: exited normally.
  (chrome not reachable)
  (The process started from chrome location /usr/bin/google-chrome is no longer running, so ChromeDriver is assuming that Chrome has crashed.)
Stacktrace:
#0 0x562b0da106c3 <unknown>
#1 0x562b0d6e61e7 <unknown>
#2 0x562b0d719526 <unknown>
#3 0x562b0d71569c <unknown>
#4 0x562b0d75823a <unknown>
#5 0x562b0d74ee93 <unknown>
#6 0x562b0d721934 <unknown>
#7 0x562b0d72271e <unknown>
#8 0x562b0d9d5cc8 <unknown>
#9 0x562b0d9d9c00 <unknown>
#10 0x562b0d9e41ac <unknown>
#11 0x562b0d9da818 <unknown>
#12 0x562b0d9a728f <unknown>
#13 0x562b0d9fee98 <unknown>
#14 0x562b0d9ff069 <unknown>
#15 0x562b0da0f853 <unknown>
#16 0x7f0c29a97b43 <unknown>
'}
python django selenium-webdriver celery supervisord
1个回答
0
投票

我遇到了和你一样的错误。当我使用 selenium 运行单个脚本时,它运行良好,但是当我尝试通过主管启动它时,它失败了。您成功解决这个问题了吗?

© www.soinside.com 2019 - 2024. All rights reserved.