Skip to content

AttributeError: module 'psycopg2' has no attribute 'extensions' #111

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

Open
PeterJCLaw opened this issue Sep 3, 2020 · 0 comments
Open

AttributeError: module 'psycopg2' has no attribute 'extensions' #111

PeterJCLaw opened this issue Sep 3, 2020 · 0 comments

Comments

@PeterJCLaw
Copy link
Contributor

I'm not sure what triggers it, but after running for some time a Jacquard webserver instance will start failing requests (HTTP 500) which involve a directory lookup with the a stack trace that ends with:

  File "/usr/lib/python3/dist-packages/sqlalchemy/dialects/postgresql/psycopg2.py", line 579, in dbapi
    import psycopg2
  File "/usr/lib/python3/dist-packages/psycopg2/__init__.py", line 67, in <module>
    import psycopg2.extensions as _ext
AttributeError: module 'psycopg2' has no attribute 'extensions'
Full stack trace
ERROR:waitress:Exception when serving /users/1422012
Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/waitress/channel.py", line 338, in service
    task.service()
  File "/usr/lib/python3/dist-packages/waitress/task.py", line 169, in service
    self.execute()
  File "/usr/lib/python3/dist-packages/waitress/task.py", line 399, in execute
    app_iter = self.channel.server.application(env, start_response)
  File "/usr/lib/python3/dist-packages/jacquard/service/wsgi.py", line 48, in application
    response = endpoint.handle(**kwargs)
  File "/usr/lib/python3/dist-packages/jacquard/service/endpoints.py", line 42, in handle
    settings = get_settings(user, self.config.storage, self.config.directory)
  File "/usr/lib/python3/dist-packages/jacquard/config.py", line 88, in directory
    return self._thread_local_property("directory", self._open_directory)
  File "/usr/lib/python3/dist-packages/jacquard/config.py", line 54, in _thread_local_property
    setattr(self._thread_local, name, generator())
  File "/usr/lib/python3/dist-packages/jacquard/config.py", line 78, in _open_directory
    return open_directory(self, self.directory_settings["engine"], kwargs)
  File "/usr/lib/python3/dist-packages/jacquard/directory/utils.py", line 14, in open_directory
    return cls.from_configuration(config, kwargs)
  File "/usr/lib/python3/dist-packages/jacquard/directory/union.py", line 82, in from_configuration
    return cls(cls._construct_subdirectories_from_config(config, options))
  File "/usr/lib/python3/dist-packages/jacquard/directory/union.py", line 32, in __init__
    self._subdirectories = list(subdirectories)
  File "/usr/lib/python3/dist-packages/jacquard/directory/union.py", line 65, in _construct_subdirectories_from_config
    yield open_directory(config, engine, sub_configuration)
  File "/usr/lib/python3/dist-packages/jacquard/directory/utils.py", line 14, in open_directory
    return cls.from_configuration(config, kwargs)
  File "/usr/lib/python3/dist-packages/jacquard/directory/base.py", line 41, in from_configuration
    return cls(**options)
  File "/usr/lib/python3/dist-packages/jacquard/directory/django.py", line 40, in __init__
    self.engine = sqlalchemy.create_engine(url)
  File "/usr/lib/python3/dist-packages/sqlalchemy/engine/__init__.py", line 386, in create_engine
    return strategy.create(*args, **kwargs)
  File "/usr/lib/python3/dist-packages/sqlalchemy/engine/strategies.py", line 75, in create
    dbapi = dialect_cls.dbapi(**dbapi_args)
  File "/usr/lib/python3/dist-packages/sqlalchemy/dialects/postgresql/psycopg2.py", line 579, in dbapi
    import psycopg2
  File "/usr/lib/python3/dist-packages/psycopg2/__init__.py", line 67, in 
    import psycopg2.extensions as _ext
AttributeError: module 'psycopg2' has no attribute 'extensions'

The odd part is that the Jacquard instance does work to start with. Running import psycopg2 in a python3 shell on the same machine also works fine.

We do have a plugin in /etc/jacquard/plugins/, but not called psycopg2.

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

No branches or pull requests

1 participant