0

データベースとして neo4j を使用し、OGM として neomodel を使用して最初の Django プロジェクトを設定しようとしているので、この指示に従います。それにもかかわらず、Django サーバーを起動しようとすると、次のエラーが発生します。

Exception in thread django-main-thread:
Traceback (most recent call last):
  File "/usr/local/Cellar/python@3.8/3.8.6_2/Frameworks/Python.framework/Versions/3.8/lib/python3.8/threading.py", line 932, in _bootstrap_inner
    self.run()
  File "/usr/local/Cellar/python@3.8/3.8.6_2/Frameworks/Python.framework/Versions/3.8/lib/python3.8/threading.py", line 870, in run
    self._target(*self._args, **self._kwargs)
  File "/Users/hugovillalobos/Documents/Code/attractoraproject/attractora_backend/AttractoraVenv/lib/python3.8/site-packages/django/utils/autoreload.py", line 53, in wrapper
    fn(*args, **kwargs)
  File "/Users/hugovillalobos/Documents/Code/attractoraproject/attractora_backend/AttractoraVenv/lib/python3.8/site-packages/django/core/management/commands/runserver.py", line 110, in inner_run
    autoreload.raise_last_exception()
  File "/Users/hugovillalobos/Documents/Code/attractoraproject/attractora_backend/AttractoraVenv/lib/python3.8/site-packages/django/utils/autoreload.py", line 76, in raise_last_exception
    raise _exception[1]
  File "/Users/hugovillalobos/Documents/Code/attractoraproject/attractora_backend/AttractoraVenv/lib/python3.8/site-packages/django/core/management/__init__.py", line 357, in execute
    autoreload.check_errors(django.setup)()
  File "/Users/hugovillalobos/Documents/Code/attractoraproject/attractora_backend/AttractoraVenv/lib/python3.8/site-packages/django/utils/autoreload.py", line 53, in wrapper
    fn(*args, **kwargs)
  File "/Users/hugovillalobos/Documents/Code/attractoraproject/attractora_backend/AttractoraVenv/lib/python3.8/site-packages/django/__init__.py", line 24, in setup
    apps.populate(settings.INSTALLED_APPS)
  File "/Users/hugovillalobos/Documents/Code/attractoraproject/attractora_backend/AttractoraVenv/lib/python3.8/site-packages/django/apps/registry.py", line 122, in populate
    app_config.ready()
  File "/Users/hugovillalobos/Documents/Code/attractoraproject/attractora_backend/AttractoraVenv/lib/python3.8/site-packages/django_neomodel/apps.py", line 20, in ready
    self.read_settings()
  File "/Users/hugovillalobos/Documents/Code/attractoraproject/attractora_backend/AttractoraVenv/lib/python3.8/site-packages/django_neomodel/apps.py", line 17, in read_settings
    config.MAX_POOL_SIZE = getattr(settings, 'NEOMODEL_MAX_POOL_SIZE', config.MAX_POOL_SIZE)
AttributeError: module 'neomodel.config' has no attribute 'MAX_POOL_SIZE'

私はpython 3.7とDjango 3.1.4を使用しています。

編集 これらは私の設定であり、指示の状態であり、まだコードがありません。この設定でDjangoサーバーを起動したいだけです。

NEOMODEL_NEO4J_BOLT_URL = os.environ.get('NEO4J_BOLT_URL', 'bolt://neo4j:test@localhost:7687')

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'django_neomodel',
    'rest_framework',
]
4

2 に答える 2

0

私は同じ問題に遭遇しましたが、なぜそれが起こっているのかまだよくわかりません。このエラー メッセージは、neomodel-django の apps.py ファイルによってスローされます。

 def read_settings(self):
        config.DATABASE_URL = getattr(settings, 'NEOMODEL_NEO4J_BOLT_URL', config.DATABASE_URL)
        config.FORCE_TIMEZONE = getattr(settings, 'NEOMODEL_FORCE_TIMEZONE', False)
        config.ENCRYPTED_CONNECTION = getattr(settings, 'NEOMODEL_ENCRYPTED_CONNECTION', False)
        config.MAX_CONNECTION_POOL_SIZE = getattr(settings, 'NEOMODEL_MAX_CONNECTION_POOL_SIZE', config.MAX_CONNECTION_POOL_SIZE)

django 設定ファイルで NEOMODEL_MAX_CONNECTION_POOL を設定すると、うまくいかない場合を除いて、正しい値が提供されるはずです。getattr (config.MAX_CONNECTION_POOL_SIZE) で提供されるデフォルト値は、neomodel 構成オブジェクト/モジュールのプロパティであり、明らかにデフォルトでは設定されていません。何らかの理由で、getattr はこのデフォルトを取得しようとしましたが、属性はデフォルトでは存在しません。

config.MAX_CONNECTION_POOL_SIZE を手動で設定するとどうなるかわかると思いました。良いニュース、うまくいきました!だから、私はこれを私のsettings.pyに追加しました:

from neomodel import config    
config.MAX_POOL_SIZE = 50

私は getattr をあまり使用していないことを告白します。関数定義は次のとおりです。

 getattr(object, name[, default])

オブジェクトまたはモジュールの存在しない属性に default が設定されている場合、オブジェクトと名前の値が有効で、それ以外の場合は値を返す場合でも、 getattr はすぐに AttributeError をスローします。

これは django-neomodel コードのバグのようですか? MAX_CONNECTION_POOL_SIZE が neomodel 構成で設定されることを期待していますが、少なくとも 1/22/21 の時点では neomodel 4.0.1 と django-neomodel 0.0.4 を使用しているため、そうではありません。

于 2021-01-24T14:34:38.867 に答える