首页 > 解决方案 > 在 EC2 apache2 上托管后,通过 django 中的 mongoengine 连接 mongodb atlas

问题描述

我正在尝试在使用 mongodb atlas 作为数据库的 EC2 usnig apache2 上托管 django 项目。

当我在打开一些像 8000 这样的端口后在 EC2 上本地运行它时,它运行正常,但在 apache 上它给出了错误。

下面是一些 TLSFeature 错误,我正面临

mod_wsgi (pid=67994, process='tracky', application='ip-IP_ADDRESS|'): Loading Python script file '/home/tracky/tracky-api/tracky/wsgi.py'.
mongodb+srv://username:password@host/dbname?retryWrites=true&w=majority

mod_wsgi (pid=67994): Exception occurred processing WSGI script '/home/tracky/tracky-api/tracky/wsgi.py'.
Traceback (most recent call last):
  File "/home/ubuntu/anaconda3/envs/tracky/lib/python3.6/site-packages/pymongo/pool.py", line 1278, in _get_socket
    sock_info = self.sockets.popleft()
IndexError: pop from an empty deque

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/ubuntu/anaconda3/envs/tracky/lib/python3.6/site-packages/django/core/handlers/exception.py", line 47, in inner
    response = get_response(request)
  File "/home/ubuntu/anaconda3/envs/tracky/lib/python3.6/site-  File "/home/tracky/tracky-api/trackyapi/urls.py", line 2, in <module>
    from .views import Tracky
  File "/home/tracky/tracky-api/trackyapi/views.py", line 16, in <module>
    from .serializers import GoalsSerializer, GoalSerializer
  File "/home/tracky/tracky-api/trackyapi/serializers.py", line 9, in <module>
    class GoalSerializer(DocumentSerializer):
  File "/home/tracky/tracky-api/trackyapi/serializers.py", line 11, in GoalSerializer
    uid = ReferenceField(User, write_only=True)
  File "/home/ubuntu/anaconda3/envs/tracky/lib/python3.6/site-packages/rest_framework_mongoengine/fields.py", line 217, in __init__
    self.queryset = model.objects
  File "/home/ubuntu/anaconda3/envs/tracky/lib/python3.6/site-packages/mongoengine/queryset/manager.py", line 38, in __get__
    queryset = queryset_class(owner, owner._get_collection())
  File "/home/ubuntu/anaconda3/envs/tracky/lib/python3.6/site-packages/mongoengine/document.py", line 215, in _get_collection
    db = cls._get_db()
  File "/home/ubuntu/anaconda3/envs/tracky/lib/python3.6/site-packages/mongoengine/document.py", line 193, in _get_db
    return get_db(cls._meta.get("db_alias", DEFAULT_CONNECTION_NAME))
  File "/home/ubuntu/anaconda3/envs/tracky/lib/python3.6/site-packages/mongoengine/connection.py", line 363, in get_db
    db.authenticate(
  File "/home/ubuntu/anaconda3/envs/tracky/lib/python3.6/site-packages/pymongo/database.py", line 1492, in authenticate
    self.client._cache_credentials(
  File "/home/ubuntu/anaconda3/envs/tracky/lib/python3.6/site-packages/pymongo/mongo_client.py", line 780, in _cache_credentials
    with server.get_socket(all_credentials) as sock_info:
  File "/usr/lib/python3.8/contextlib.py", line 113, in __enter__
    return next(self.gen)
  File "/home/ubuntu/anaconda3/envs/tracky/lib/python3.6/site-packages/pymongo/pool.py", line 1231, in get_socket
    sock_info = self._get_socket(all_credentials)
  File "/home/ubuntu/anaconda3/envs/tracky/lib/python3.6/site-packages/pymongo/pool.py", line 1281, in _get_socket
    sock_info = self.connect(all_credentials)
  File "/home/ubuntu/anaconda3/envs/tracky/lib/python3.6/site-packages/pymongo/pool.py", line 1180, in connect
    sock = _configured_socket(self.address, self.opts)
  File "/home/ubuntu/anaconda3/envs/tracky/lib/python3.6/site-packages/pymongo/pool.py", line 1002, in _configured_socket
    sock = ssl_context.wrap_socket(sock, server_hostname=host)
  File "/home/ubuntu/anaconda3/envs/tracky/lib/python3.6/site-packages/pymongo/pyopenssl_context.py", line 313, in wrap_socket
    ssl_conn.do_handshake()
  File "/home/ubuntu/anaconda3/envs/tracky/lib/python3.6/site-packages/pymongo/pyopenssl_context.py", line 116, in do_handshake
    return self._call(super(_sslConn, self).do_handshake, *args, **kwargs)
  File "/home/ubuntu/anaconda3/envs/tracky/lib/python3.6/site-packages/pymongo/pyopenssl_context.py", line 107, in _call
    return call(*args, **kwargs)
  File "/usr/lib/python3/dist-packages/OpenSSL/SSL.py", line 1915, in do_handshake
    self._raise_ssl_error(self._ssl, result)
  File "/usr/lib/python3/dist-packages/OpenSSL/SSL.py", line 1618, in _raise_ssl_error
    self._context._ocsp_helper.raise_if_problem()
  File "/usr/lib/python3/dist-packages/OpenSSL/SSL.py", line 294, in raise_if_problem
    raise self._problems.pop(0)
  File "/usr/lib/python3/dist-packages/OpenSSL/SSL.py", line 590, in wrapper
    valid = callback(conn, ocsp_data, data)
  File "/home/ubuntu/anaconda3/envs/tracky/lib/python3.6/site-packages/pymongo/ocsp_support.py", line 292, in _ocsp_callback
    ext = _get_extension(cert, _TLSFeature)
  File "/home/ubuntu/anaconda3/envs/tracky/lib/python3.6/site-packages/pymongo/ocsp_support.py", line 119, in _get_extension
    return cert.extensions.get_extension_for_class(klass)
  File "/home/ubuntu/anaconda3/envs/tracky/lib/python3.6/site-packages/cryptography/x509/extensions.py", line 134, in get_extension_for_class
    raise ExtensionNotFound(
cryptography.x509.extensions.ExtensionNotFound: No <class 'cryptography.x509.extensions.TLSFeature'> extension was found

任何建议都会有所帮助。谢谢。

标签: python-3.xdjangoubuntumod-wsgimongoengine

解决方案


推荐阅读