0
aws beanstalk에서 python(3.4)
플라스크 앱을 실행 중입니다. ec2 쉘에 로그인하여 플라스크 응용 프로그램을 로컬에서 실행하려고하면 제대로 실행되어 원격 cassandra
에서 데이터를 가져옵니다. 그러나 cassandra
에서 데이터를 가져 오는 동안 AWS eb에서 실행하는 앱은 httpd/error_log에서 다음 오류를 계속 throw합니다.AWS beanstalk에서 실행중인 flask 앱이 원격 cassandra에 연결할 수 없습니다.
ERROR in app: Exception on /user/1003 [GET]
Traceback (most recent call last):
File "/opt/python/run/venv/lib/python3.4/site-packages/flask/app.py", line 1988, in wsgi_app
response = self.full_dispatch_request()
File "/opt/python/run/venv/lib/python3.4/site-packages/flask/app.py", line 1641, in full_dispatch_request
rv = self.handle_user_exception(e)
File "/opt/python/run/venv/lib/python3.4/site-packages/flask/app.py", line 1544, in handle_user_exception
reraise(exc_type, exc_value, tb)
File "/opt/python/run/venv/lib/python3.4/site-packages/flask/_compat.py", line 33, in reraise
raise value
File "/opt/python/run/venv/lib/python3.4/site-packages/flask/app.py", line 1639, in full_dispatch_request
rv = self.dispatch_request()
File "/opt/python/run/venv/lib/python3.4/site-packages/flask/app.py", line 1625, in dispatch_request
return self.view_functions[rule.endpoint](**req.view_args)
File "/opt/python/current/app/application.py", line 53, in user_profile
data = get_user_data(id)
File "/opt/python/current/app/application.py", line 163, in get_user_data
if obj:
File "/opt/python/run/venv/lib64/python3.4/site-packages/cassandra/cqlengine/query.py", line 393, in __le
n__
self._execute_query()
File "/opt/python/run/venv/lib64/python3.4/site-packages/cassandra/cqlengine/query.py", line 428, in _exe
cute_query
self._result_generator = (i for i in self._execute(self._select_query()))
File "/opt/python/run/venv/lib64/python3.4/site-packages/cassandra/cqlengine/query.py", line 360, in _exe
cute
result = _execute_statement(self.model, statement, self._consistency, self._timeout)
File "/opt/python/run/venv/lib64/python3.4/site-packages/cassandra/cqlengine/query.py", line 1412, in _ex
ecute_statement
parts = model._routing_key_from_values(key_values, connection.get_cluster().protocol_version)
File "/opt/python/run/venv/lib64/python3.4/site-packages/cassandra/cqlengine/connection.py", line 183, in
get_cluster
raise CQLEngineException("%s.cluster is not configured. Call one of the setup or default functions firs
t." % __name__)
cassandra.cqlengine.CQLEngineException: cassandra.cqlengine.connection.cluster is not configured. Call one
of the setup or default functions first.
내 ENV :
(venv)[[email protected] ~]$ pip freeze
cassandra-driver==3.6.0
click==6.6
Cython==0.24.1
Flask==0.11
itsdangerous==0.24
Jinja2==2.8
MarkupSafe==0.23
six==1.10.0
Werkzeug==0.11.11
xmltodict==0.10.2
감사
이 사실 나는 내 응용 프로그램의 주요 기능에서이 작업을 수행 할 경우 __name__ == "__main__": connection.setup ([config.CASSANDRA_CLUSTER_IP, config.CONST_KEYSPACE,의 protocol_version = 3) os.environ [ "CQLENG_ALLOW_SCHEMA_MANAGEMENT"] = " 예 " sync_table (mytable) – VaibhavJain
env var가 설정되어 있습니까? –
내 잘못입니다. 나는 __main__ 함수로 연결을 설정하고 있었다. Elastic Beanstalk의 AWS 구성은 WSGI 환경을 구성합니다 (백엔드에서 Apache + WSGI입니다). EB 환경에서 실행될 때 주 함수가 호출되었습니다. 나는 main 함수 밖에서 연결 코드를 움직 였고 작동하기 시작했다. – VaibhavJain