Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Motioneye install timeout error #6333

Closed
magicfoxt-magicfox opened this issue Apr 23, 2023 · 17 comments
Closed

Motioneye install timeout error #6333

magicfoxt-magicfox opened this issue Apr 23, 2023 · 17 comments
Milestone

Comments

@magicfoxt-magicfox
Copy link

Motioneye fresh install error (Bookworm)

  • Date | Sun Apr 23 12:31:20 CEST 2023
  • DietPi version | v8.16.2 (MichaIng/master)
  • Image creator |
  • Pre-image |
  • Hardware | RPi 3 Model B (armv7l) (ID=3)
  • Kernel version | Linux DietPi 6.1.21-v7+ #1642 SMP Mon Apr 3 17:20:52 BST 2023 armv7l GNU/Linux
  • Distro | bookworm (ID=7,RASPBIAN=1)
  • Command | pip3 install -U https://github.com/motioneye-project/motioneye/archive/dev.tar.gz
  • Exit code | 2
  • Software title | DietPi-Software

Steps to reproduce:

Motioneye install with dietpi-software.

Extra details:

Read timeout error:
Collecting pillow (from motioneye==0.43.0) Downloading Pillow-9.5.0.tar.gz (50.5 MB) 0.4/50.5 MB 237.1 kB/s eta 0:03:32 ERROR:...

Note: Downloading the file on pypi.org with wget is correct (slow download).
wget https://files.pythonhosted.org/packages/00/d5/4903f310765e0ff2b8e91ffe55031ac6af77d982f0156061e20a4d1a8b2d/Pillow-9.5.0.tar.gz

Additional logs:

Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple/
Collecting https://github.com/motioneye-project/motioneye/archive/dev.tar.gz
  Downloading https://github.com/motioneye-project/motioneye/archive/dev.tar.gz
     / 1.3 MB 76.6 kB/s 0:00:17
  Installing build dependencies: started
  Installing build dependencies: finished with status 'done'
  Getting requirements to build wheel: started
  Getting requirements to build wheel: finished with status 'done'
  Preparing metadata (pyproject.toml): started
  Preparing metadata (pyproject.toml): finished with status 'done'
Collecting tornado (from motioneye==0.43.0)
  Downloading https://www.piwheels.org/simple/tornado/tornado-6.3.1-cp38-abi3-linux_armv7l.whl (425 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 425.3/425.3 kB 47.5 kB/s eta 0:00:00
Collecting jinja2 (from motioneye==0.43.0)
  Downloading https://www.piwheels.org/simple/jinja2/Jinja2-3.1.2-py3-none-any.whl (133 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 133.1/133.1 kB 1.8 MB/s eta 0:00:00
Collecting pillow (from motioneye==0.43.0)
  Downloading Pillow-9.5.0.tar.gz (50.5 MB)
                                              0.4/50.5 MB 237.1 kB/s eta 0:03:32
ERROR: Exception:
Traceback (most recent call last):
  File "/usr/local/lib/python3.11/dist-packages/pip/_vendor/urllib3/response.py", line 438, in _error_catcher
    yield
  File "/usr/local/lib/python3.11/dist-packages/pip/_vendor/urllib3/response.py", line 561, in read
    data = self._fp_read(amt) if not fp_closed else b""
           ^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/dist-packages/pip/_vendor/urllib3/response.py", line 527, in _fp_read
    return self._fp.read(amt) if amt is not None else self._fp.read()
           ^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/http/client.py", line 465, in read
    s = self.fp.read(amt)
        ^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/socket.py", line 706, in readinto
    return self._sock.recv_into(b)
           ^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/ssl.py", line 1278, in recv_into
    return self.read(nbytes, buffer)
           ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/ssl.py", line 1134, in read
    return self._sslobj.read(len, buffer)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
TimeoutError: The read operation timed out

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/local/lib/python3.11/dist-packages/pip/_internal/cli/base_command.py", line 169, in exc_logging_wrapper
    status = run_func(*args)
             ^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/dist-packages/pip/_internal/cli/req_command.py", line 248, in wrapper
    return func(self, options, args)
           ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/dist-packages/pip/_internal/commands/install.py", line 377, in run
    requirement_set = resolver.resolve(
                      ^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/dist-packages/pip/_internal/resolution/resolvelib/resolver.py", line 92, in resolve
    result = self._result = resolver.resolve(
                            ^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/dist-packages/pip/_vendor/resolvelib/resolvers.py", line 546, in resolve
    state = resolution.resolve(requirements, max_rounds=max_rounds)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/dist-packages/pip/_vendor/resolvelib/resolvers.py", line 427, in resolve
    failure_causes = self._attempt_to_pin_criterion(name)
                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/dist-packages/pip/_vendor/resolvelib/resolvers.py", line 239, in _attempt_to_pin_criterion
    criteria = self._get_updated_criteria(candidate)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/dist-packages/pip/_vendor/resolvelib/resolvers.py", line 230, in _get_updated_criteria
    self._add_to_criteria(criteria, requirement, parent=candidate)
  File "/usr/local/lib/python3.11/dist-packages/pip/_vendor/resolvelib/resolvers.py", line 173, in _add_to_criteria
    if not criterion.candidates:
  File "/usr/local/lib/python3.11/dist-packages/pip/_vendor/resolvelib/structs.py", line 156, in __bool__
    return bool(self._sequence)
           ^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/dist-packages/pip/_internal/resolution/resolvelib/found_candidates.py", line 155, in __bool__
    return any(self)
           ^^^^^^^^^
  File "/usr/local/lib/python3.11/dist-packages/pip/_internal/resolution/resolvelib/found_candidates.py", line 143, in <genexpr>
    return (c for c in iterator if id(c) not in self._incompatible_ids)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/dist-packages/pip/_internal/resolution/resolvelib/found_candidates.py", line 47, in _iter_built
    candidate = func()
                ^^^^^^
  File "/usr/local/lib/python3.11/dist-packages/pip/_internal/resolution/resolvelib/factory.py", line 206, in _make_candidate_from_link
    self._link_candidate_cache[link] = LinkCandidate(
                                       ^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/dist-packages/pip/_internal/resolution/resolvelib/candidates.py", line 293, in __init__
    super().__init__(
  File "/usr/local/lib/python3.11/dist-packages/pip/_internal/resolution/resolvelib/candidates.py", line 156, in __init__
    self.dist = self._prepare()
                ^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/dist-packages/pip/_internal/resolution/resolvelib/candidates.py", line 225, in _prepare
    dist = self._prepare_distribution()
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/dist-packages/pip/_internal/resolution/resolvelib/candidates.py", line 304, in _prepare_distribution
    return preparer.prepare_linked_requirement(self._ireq, parallel_builds=True)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/dist-packages/pip/_internal/operations/prepare.py", line 516, in prepare_linked_requirement
    return self._prepare_linked_requirement(req, parallel_builds)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/dist-packages/pip/_internal/operations/prepare.py", line 587, in _prepare_linked_requirement
    local_file = unpack_url(
                 ^^^^^^^^^^^
  File "/usr/local/lib/python3.11/dist-packages/pip/_internal/operations/prepare.py", line 166, in unpack_url
    file = get_http_url(
           ^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/dist-packages/pip/_internal/operations/prepare.py", line 107, in get_http_url
    from_path, content_type = download(link, temp_dir.path)
                              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/dist-packages/pip/_internal/network/download.py", line 147, in __call__
    for chunk in chunks:
  File "/usr/local/lib/python3.11/dist-packages/pip/_internal/cli/progress_bars.py", line 53, in _rich_progress_bar
    for chunk in iterable:
  File "/usr/local/lib/python3.11/dist-packages/pip/_internal/network/utils.py", line 63, in response_chunks
    for chunk in response.raw.stream(
  File "/usr/local/lib/python3.11/dist-packages/pip/_vendor/urllib3/response.py", line 622, in stream
    data = self.read(amt=amt, decode_content=decode_content)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/dist-packages/pip/_vendor/urllib3/response.py", line 560, in read
    with self._error_catcher():
  File "/usr/lib/python3.11/contextlib.py", line 155, in __exit__
    self.gen.throw(typ, value, traceback)
  File "/usr/local/lib/python3.11/dist-packages/pip/_vendor/urllib3/response.py", line 443, in _error_catcher
    raise ReadTimeoutError(self._pool, None, "Read timed out.")
pip._vendor.urllib3.exceptions.ReadTimeoutError: HTTPSConnectionPool(host='files.pythonhosted.org', port=443): Read timed out.
@Joulinar
Copy link
Collaborator

looks like some time-out for connecting to files.pythonhosted.org

    raise ReadTimeoutError(self._pool, None, "Read timed out.")
pip._vendor.urllib3.exceptions.ReadTimeoutError: HTTPSConnectionPool(host='files.pythonhosted.org', port=443): Read timed out.

Maybe you need to try again later.

@magicfoxt-magicfox
Copy link
Author

Don't do that twice without a third one more ;-) but same error again...
I don't know how max timeout is set in python library for slow server.

One thing is strange to me, previous downloads show complete URL https://... but not for "Pillow-9.5.0.tar.gz"
Is not the same download way?

@MichaIng
Copy link
Owner

One thing is strange to me, previous downloads show complete URL https://... but not for "Pillow-9.5.0.tar.gz"
Is not the same download way?

The other two are downloaded as pre-compiled wheels (.whl from piwheels), but there is no Python 3.11 compatible wheel for Pillow, hence the source code (as .tar.gz) is downloaded, which never shows the full URL.

Does a manual download of this source code work in your case?

cd /tmp
curl -O 'https://files.pythonhosted.org/packages/00/d5/4903f310765e0ff2b8e91ffe55031ac6af77d982f0156061e20a4d1a8b2d/Pillow-9.5.0.tar.gz'

@magicfoxt-magicfox
Copy link
Author

magicfoxt-magicfox commented Apr 23, 2023

I did it successfully with wget in my first post (very slow download).

Server seems have problems ;-)

curl -O 'https://files.pythonhosted.org/packages/00/d5/4903f310765e0ff2b8e91ffe55031ac6af77d982f0156061e20a4d1a8b2d/Pillow-9.5.0.tar.gz'
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
 25 48.1M   25 12.0M    0     0  14908      0  0:56:26  0:14:10  0:42:16     0
curl: (56) Recv failure: Connection reset by peer

Thanks for investigating, I'll do an other retry tomorrow.

@MichaIng
Copy link
Owner

It works fine here, so probably an issue with a particular instance of this host (if it is multicast, i.e. the same hostname pointing to different servers depending on your location).

I'll do an other retry tomorrow.

Makes sense. If it is still an issue then, we can check where to report it to Python guys.

@magicfoxt-magicfox
Copy link
Author

Some redo today with the same timeout error :(
pythonhosted.org is hosted by Gandi but contact set to privacy.

@MichaIng
Copy link
Owner

MichaIng commented Apr 24, 2023

For reference: https://status.python.org/

Fastly Europe (LCY) Under Maintenance

LCY = London City Airport?

PyPI Files CDN Edge Errors (=files.pythonhosted.org) shows some errors, but not that many.

I think best is to report at PyPI support repo: https://github.com/pypi/support/issues/new?labels=network&template=access-issues.yml
The issue template also contains some nice debug steps.

@magicfoxt-magicfox
Copy link
Author

Thank you for your advise, reported on:
pypi/support#2786

@MichaIng
Copy link
Owner

Great. You post misses code fences ``` somewhere at the top so that actual code is shown as formatted text and the (intended to be formatted) headers are shown as code. For readability and to avoid having parts of code/logs Markdown-interpreted, always good to consequently use code fences:

```
line 1
line 2
etc
```

@magicfoxt-magicfox
Copy link
Author

magicfoxt-magicfox commented May 11, 2023

Following install from an other place, the build require the headers of jpeg library.

--- /boot/dietpi/dietpi-software.orig	2023-05-07 00:09:28.000000000 +0200
+++ /boot/dietpi/dietpi-software	2023-05-11 12:11:56.000000000 +0200
@@ -9126,7 +9126,7 @@
 		if To_Install 136 motioneye # motionEye
 		then
 			# x86_64/ARMv8 dependencies: libcurl4-openssl-dev gcc libssl-dev for pycurl build
-			[[ $G_HW_MODEL == [12] ]] || G_AGI libcurl4-openssl-dev gcc libssl-dev
+			[[ $G_HW_MODEL == [12] ]] || G_AGI libcurl4-openssl-dev gcc libssl-dev libjpeg-dev

 			# RPi: Enable camera module
 			(( $G_HW_MODEL > 9 )) || /boot/dietpi/func/dietpi-set_hardware rpi-camera enable

@MichaIng
Copy link
Owner

@magicfoxt-magicfox
Did you try this just now? libjpeg-dev should only be needed to compile Pillow, but Pillow is available on piwheels: https://piwheels.org/project/Pillow/

@magicfoxt-magicfox
Copy link
Author

I did the build of Motioneye on may,10 and got an error with the script on step "Building wheels for collected packages: motioneye, pillow, pycurl, MarkupSafe"
After a apt install libjpeg-dev, the build of Motioneye by dietpi-software is correct for me.

@MichaIng
Copy link
Owner

Probably the wheel was uploaded just the day after you tried it. I just did a test and the pillow wheels is downloaded from piwheels as intended:

Collecting jinja2 (from motioneye==0.43.0)
  Downloading https://www.piwheels.org/simple/jinja2/Jinja2-3.1.2-py3-none-any.whl (133 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 133.1/133.1 kB 1.2 MB/s eta 0:00:00
Collecting pillow (from motioneye==0.43.0)
  Downloading https://www.piwheels.org/simple/pillow/Pillow-9.5.0-cp39-cp39-linux_armv7l.whl (1.1 MB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 1.1/1.1 MB 2.3 MB/s eta 0:00:00
Collecting pycurl (from motioneye==0.43.0)
  Downloading https://www.piwheels.org/simple/pycurl/pycurl-7.45.2-cp39-cp39-linux_armv7l.whl (294 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 294.7/294.7 kB 3.2 MB/s eta 0:00:00
Collecting babel (from motioneye==0.43.0)
  Downloading https://www.piwheels.org/simple/babel/Babel-2.12.1-py3-none-any.whl (10.1 MB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 10.1/10.1 MB 3.7 MB/s eta 0:00:00
Collecting boto3 (from motioneye==0.43.0)
  Downloading https://www.piwheels.org/simple/boto3/boto3-1.26.135-py3-none-any.whl (132 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 132.9/132.9 kB 1.3 MB/s eta 0:00:00
Collecting botocore<1.30.0,>=1.29.135 (from boto3->motioneye==0.43.0)
  Downloading https://www.piwheels.org/simple/botocore/botocore-1.29.135-py3-none-any.whl (10.7 MB)

Marking this as closed.

@MichaIng MichaIng reopened this May 17, 2023
@MichaIng
Copy link
Owner

Ah wait, I missed that you are on Bookworm. Then it makes pretty much sense since piwheels provides those wheels for Python 3.7 and 3.9 only.

@MichaIng MichaIng added this to the v8.18 milestone May 17, 2023
@MichaIng
Copy link
Owner

MichaIng commented May 17, 2023

libcurl4-openssl-dev gcc libssl-dev were required as well for the pycurl build, isn't it? The code line you changed applies only for x86 and aarch64 systems, hence those should not have been installed automatically on your armv7l system.

EDIT: Ah, another bug in the code: G_HW_MODEL should have been G_HW_ARCH here, so makes sense that those packages were installed, though unintentionally 😄.

MichaIng added a commit that referenced this issue May 17, 2023
- DietPi-Software | motionEye: Resolved an issue where the installation failed on ARMv6, ARMv7 and RISC-V Bookworm systems due to missing build dependencies. Many thanks to @magicfoxt-magicfox for reporting this issue: #6333
@MichaIng MichaIng added the Solution available 🥂 Definite solution has been done label May 17, 2023
@MichaIng
Copy link
Owner

Here we go: 035ec2f

And an install test on all architecture and Debian version combinations: https://github.com/MichaIng/DietPi/actions/runs/5005620510
On RISC-V, more might be required.

@magicfoxt-magicfox
Copy link
Author

@MichaIng Thanks for your job ;-)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants