2017-04-11 1 views
0

Djano를 사용하여 간단한 API 서버를 구축했습니다. SSL은 보안을 강화하기 위해 서버와 원격 데이터베이스 간의 통신에 도입되었습니다. 내가 Djangon의 쉘 대화 형 환경으로 가서 데이터베이스에 직접 쓴 경우, 그러나Django + SSL + mysql : TypeError : __init __()에서 예상치 못한 키워드 인수 'server_hostname'이 발생했습니다.

File "/app/anaconda/lib/python2.7/site-packages/django/core/handlers/exception.py", line 39, in inner 
    response = get_response(request) 
File "/app/anaconda/lib/python2.7/site-packages/django/core/handlers/base.py", line 187, in _get_response 
    response = self.process_exception_by_middleware(e, request) 
File "/app/anaconda/lib/python2.7/site-packages/django/core/handlers/base.py", line 185, in _get_response 
    response = wrapped_callback(request, *callback_args, **callback_kwargs) 
File "/app/anaconda/lib/python2.7/site-packages/django/views/decorators/csrf.py", line 58, in wrapped_view 
    return view_func(*args, **kwargs) 
File "/app/anaconda/lib/python2.7/site-packages/django/views/generic/base.py", line 68, in view 
    return self.dispatch(request, *args, **kwargs) 
File "/app/anaconda/lib/python2.7/site-packages/rest_framework/views.py", line 474, in dispatch 
    response = self.handle_exception(exc) 
File "/app/anaconda/lib/python2.7/site-packages/rest_framework/views.py", line 434, in handle_exception 
    self.raise_uncaught_exception(exc) 
File "/app/anaconda/lib/python2.7/site-packages/rest_framework/views.py", line 471, in dispatch 
    response = handler(request, *args, **kwargs) 
File "/app/anaconda/lib/python2.7/site-packages/rest_framework/decorators.py", line 52, in handler 
    return func(*args, **kwargs) 
File "/app/mobile/mpq_backup_response/mpq_backup_response/backup_response/views.py", line 39, in sms 
    q.save() 
File "/app/anaconda/lib/python2.7/site-packages/django/db/models/base.py", line 796, in save 
    force_update=force_update, update_fields=update_fields) 
File "/app/anaconda/lib/python2.7/site-packages/django/db/models/base.py", line 821, in save_base 
    with transaction.atomic(using=using, savepoint=False): 
File "/app/anaconda/lib/python2.7/site-packages/django/db/transaction.py", line 158, in __enter__ 
    if not connection.get_autocommit(): 
File "/app/anaconda/lib/python2.7/site-packages/django/db/backends/base/base.py", line 365, in get_autocommit 
    self.ensure_connection() 
File "/app/anaconda/lib/python2.7/site-packages/django/db/backends/base/base.py", line 199, in ensure_connection 
    self.connect() 
File "/app/anaconda/lib/python2.7/site-packages/django/db/backends/base/base.py", line 171, in connect 
    self.connection = self.get_new_connection(conn_params) 
File "/app/anaconda/lib/python2.7/site-packages/django/db/backends/mysql/base.py", line 265, in get_new_connection 
    conn = Database.connect(**conn_params) 
File "/app/anaconda/lib/python2.7/site-packages/pymysql/__init__.py", line 90, in Connect 
    return Connection(*args, **kwargs) 
File "/app/anaconda/lib/python2.7/site-packages/pymysql/connections.py", line 688, in __init__ 
    self.connect() 
File "/app/anaconda/lib/python2.7/site-packages/pymysql/connections.py", line 906, in connect 
    self._request_authentication() 
File "/app/anaconda/lib/python2.7/site-packages/pymysql/connections.py", line 1086, in _request_authentication 
    self._sock = self.ctx.wrap_socket(self._sock, server_hostname=self.host) 
File "/app/anaconda/lib/python2.7/ssl.py", line 352, in wrap_socket 
    _context=self) 
TypeError: __init__() got an unexpected keyword argument 'server_hostname' 

모든 것이 순조롭게 다음 API 서버가 데이터베이스에 기록했을 때, 나는 다음과 같은 오류가 발생했습니다. 왜이 문제가 발생하지 않습니다.

답변

0

이 문제는 Python 2.7.10이 설치된 OS X에있는 것으로 보이며 아래 링크를 따르면 CentOS 7 및 Python ver 2.7.9 이상에서이 문제가 발생할 가능성이 큽니다. 1.2.1

https://github.com/gevent/gevent/issues/477

업데이트 gevent 문제를 해결할 것으로 보인다.

Mac에서 "pip install --upgrade gevent"를 실행하여이 문제를 해결할 수 있습니다.

관련 문제