2016-10-27 3 views
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 

감사

답변

0

당신은 설정 먼저 카산드라에 대한 연결하지 않았다. 쿼리를 실행하려면 먼저이 작업을 수행해야합니다.

+0

이 사실 나는 내 응용 프로그램의 주요 기능에서이 작업을 수행 할 경우 __name__ == "__main__": connection.setup ([config.CASSANDRA_CLUSTER_IP, config.CONST_KEYSPACE,의 protocol_version = 3) os.environ [ "CQLENG_ALLOW_SCHEMA_MANAGEMENT"] = " 예 " sync_table (mytable) – VaibhavJain

+0

env var가 설정되어 있습니까? –

+0

내 잘못입니다. 나는 __main__ 함수로 연결을 설정하고 있었다. Elastic Beanstalk의 AWS 구성은 WSGI 환경을 구성합니다 (백엔드에서 Apache + WSGI입니다). EB 환경에서 실행될 때 주 함수가 호출되었습니다. 나는 main 함수 밖에서 연결 코드를 움직 였고 작동하기 시작했다. – VaibhavJain

관련 문제