mirror of
https://github.com/spotipy-dev/spotipy.git
synced 2026-06-19 09:13:53 +00:00
Avoid garbage collection for requests.Session (#1189)
* workaround for garbage collection * add missing import * linting issues (wrong import order) * fix imports
This commit is contained in:
parent
103d6873fa
commit
4f01f7187d
@ -26,6 +26,7 @@ Add your changes below.
|
|||||||
- Fixed scripts in examples directory that didn't run correctly
|
- Fixed scripts in examples directory that didn't run correctly
|
||||||
- Updated documentation for `Client.current_user_top_artists` to indicate maximum number of artists limit
|
- Updated documentation for `Client.current_user_top_artists` to indicate maximum number of artists limit
|
||||||
- Set auth cache file permissions to `600`: https://github.com/spotipy-dev/spotipy/security/advisories/GHSA-pwhh-q4h6-w599
|
- Set auth cache file permissions to `600`: https://github.com/spotipy-dev/spotipy/security/advisories/GHSA-pwhh-q4h6-w599
|
||||||
|
- Fixed `__del__` methods by preventing garbage collection for `requests.Session`
|
||||||
|
|
||||||
### Changed
|
### Changed
|
||||||
|
|
||||||
|
|||||||
@ -11,7 +11,7 @@ from collections import defaultdict
|
|||||||
import requests
|
import requests
|
||||||
|
|
||||||
from spotipy.exceptions import SpotifyException
|
from spotipy.exceptions import SpotifyException
|
||||||
from spotipy.util import Retry
|
from spotipy.util import REQUESTS_SESSION, Retry
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
@ -211,11 +211,8 @@ class Spotify:
|
|||||||
|
|
||||||
def __del__(self):
|
def __del__(self):
|
||||||
"""Make sure the connection (pool) gets closed"""
|
"""Make sure the connection (pool) gets closed"""
|
||||||
try:
|
if getattr(self, "_session", None) and isinstance(self._session, REQUESTS_SESSION):
|
||||||
if isinstance(self._session, requests.Session):
|
self._session.close()
|
||||||
self._session.close()
|
|
||||||
except AttributeError:
|
|
||||||
pass
|
|
||||||
|
|
||||||
def _build_session(self):
|
def _build_session(self):
|
||||||
self._session = requests.Session()
|
self._session = requests.Session()
|
||||||
|
|||||||
@ -21,7 +21,8 @@ import requests
|
|||||||
|
|
||||||
from spotipy.cache_handler import CacheFileHandler, CacheHandler
|
from spotipy.cache_handler import CacheFileHandler, CacheHandler
|
||||||
from spotipy.exceptions import SpotifyOauthError, SpotifyStateError
|
from spotipy.exceptions import SpotifyOauthError, SpotifyStateError
|
||||||
from spotipy.util import CLIENT_CREDS_ENV_VARS, get_host_port, normalize_scope
|
from spotipy.util import (CLIENT_CREDS_ENV_VARS, REQUESTS_SESSION,
|
||||||
|
get_host_port, normalize_scope)
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
@ -122,7 +123,7 @@ class SpotifyAuthBase:
|
|||||||
|
|
||||||
def __del__(self):
|
def __del__(self):
|
||||||
"""Make sure the connection (pool) gets closed"""
|
"""Make sure the connection (pool) gets closed"""
|
||||||
if isinstance(self._session, requests.Session):
|
if getattr(self, "_session", None) and isinstance(self._session, REQUESTS_SESSION):
|
||||||
self._session.close()
|
self._session.close()
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -9,6 +9,7 @@ import os
|
|||||||
import warnings
|
import warnings
|
||||||
from types import TracebackType
|
from types import TracebackType
|
||||||
|
|
||||||
|
import requests
|
||||||
import urllib3
|
import urllib3
|
||||||
|
|
||||||
import spotipy
|
import spotipy
|
||||||
@ -22,6 +23,9 @@ CLIENT_CREDS_ENV_VARS = {
|
|||||||
"redirect_uri": "SPOTIPY_REDIRECT_URI",
|
"redirect_uri": "SPOTIPY_REDIRECT_URI",
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# workaround for garbage collection
|
||||||
|
REQUESTS_SESSION = requests.Session
|
||||||
|
|
||||||
|
|
||||||
def prompt_for_user_token(
|
def prompt_for_user_token(
|
||||||
username=None,
|
username=None,
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user