Я получаю ошибку TypeError: 'NoneType' object is not callable
в self.pool.join
, вызванную методом __del__
модуля , содержащего следующий код .
В частности, ошибка возникает при запуске миграций базы данных или набора тестов в приложении Django.
Я попытался реализовать import atexit
и зарегистрировать методы внутри __init__
через :
atexit.register(self.pool.close)
atexit.register(self.pool.join)
... но это не сработало.
Почему эта ошибка TypeError встречается в приведенном ниже коде __del__
метода, и как я могу избежать его?
import datetime
import json
import mimetypes
from multiprocessing.pool import ThreadPool
import os
import re
import tempfile
# python 2 and python 3 compatibility library
import six
from six.moves.urllib.parse import quote
from paapi5_python_sdk.configuration import Configuration
import paapi5_python_sdk
from paapi5_python_sdk import rest
from paapi5_python_sdk.auth.sig_v4 import AWSV4Auth
class ApiClient(object):
PRIMITIVE_TYPES = (float, bool, bytes, six.text_type) + six.integer_types
NATIVE_TYPES_MAPPING = {
'int': int,
'long': int if six.PY3 else long, # noqa: F821
'float': float,
'str': str,
'bool': bool,
'date': datetime.date,
'datetime': datetime.datetime,
'object': object,
}
def __init__(self,
access_key,
secret_key,
host,
region,
configuration=None,
header_name=None,
header_value=None,
cookie=None):
if configuration is None:
configuration = Configuration()
self.configuration = configuration
self.pool = ThreadPool()
self.rest_client = rest.RESTClientObject(configuration)
self.default_headers = {}
if header_name is not None:
self.default_headers[header_name] = header_value
self.cookie = cookie
# Set default User-Agent.
self.user_agent = 'paapi5-python-sdk/1.0.0'
self.access_key = access_key
self.secret_key = secret_key
self.host = host
self.region = region
def __del__(self):
self.pool.close()
self.pool.join()
... rest of module