Skip to content

UC keeps crashing on linux with FastAPI #2069

Closed
@Willshears

Description

@Willshears

It runs fine on my Windows dev machine - when I run the program it automatically downloads the latest UC driver and works straight away. Now I'm trying to get it onto a prod environment with DigitalOcean apps and Docker. When I first run the script, it returns:

[2023-09-07 08:28:34] Extracting ['chromedriver'] from chromedriver-linux64.zip
[2023-09-07 08:28:35] Unzip Complete!
[2023-09-07 08:28:35] The file [uc_driver] was saved to:
[2023-09-07 08:28:35] /usr/local/lib/python3.10/site-packages/seleniumbase/drivers/uc_driver
[2023-09-07 08:28:35] Making [uc_driver 116.0.5845.96] executable ...
[2023-09-07 08:28:35] [uc_driver 116.0.5845.96] is now ready for use!

However, it hangs for a while and eventually responds with:
[2023-09-07 08:30:46] selenium.common.exceptions.WebDriverException: Message: unknown error: cannot connect to chrome at 127.0.0.1:9222 and (The process started from chrome location /root/.cache/selenium/chrome/linux64/116.0.5845.96/chrome is no longer running, so ChromeDriver is assuming that Chrome has crashed.)

Here's my dockerfile:

# Use the Python 3.10 slim image
FROM ubuntu:18.04
FROM python:3.10.4

# Installing necessary utilities first
RUN apt-get update && \
    apt-get install -y wget curl gnupg jq unzip libnss3 libxi6 xvfb vim libgconf-2-4 libxcb1 libglib2.0-0 && \
    apt-get clean && \
    rm -rf /var/lib/apt/lists/*

RUN CHROME_URL=$(curl -s https://googlechromelabs.github.io/chrome-for-testing/last-known-good-versions-with-downloads.json | jq -r '.channels.Stable.downloads.chrome[] | select(.platform == "linux64") | .url') \
    && curl -sSLf --retry 3 --output /tmp/chrome-linux64.zip "$CHROME_URL" \
    && unzip /tmp/chrome-linux64.zip -d /opt \
    && ln -s /opt/chrome-linux64/chrome /usr/local/bin/chrome \
    && chmod +x /usr/local/bin/chrome \
    && rm /tmp/chrome-linux64.zip

# Set environment variables
ENV PYTHONUNBUFFERED 1
ENV DISPLAY=:99

RUN export PYTHONIOENCODING=utf8
RUN echo "export PYTHONIOENCODING=utf8" >> ~/.bashrc

# Create and set the working directory
WORKDIR /app

# Copy the current directory (your FastAPI project) into the container at /app
COPY . .

COPY ./requirements.txt /requirements.txt

# Install any other dependencies for your FastAPI project
RUN pip install --no-cache-dir -r requirements.txt

Here's how the driver is being configured:
driver = Driver(uc=True, proxy=proxy, protocol="https", headless=True, no_sandbox=True, disable_gpu=True)

I can't tell if it's FastAPI, undetected chromedriver or the server itself responsible. Any help would be appreciated! thanks.

Metadata

Metadata

Assignees

No one assigned

    Labels

    UC Mode / CDP ModeUndetected Chromedriver Mode / CDP ModeduplicateThe answer/solution already exists somewhereexternalOutside SeleniumBase's scope. / Ask somewhere else.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions