2016-10-27 5 views
0

Ich bin mit einer python(3.4) Flasche App auf AWS Bohnenstange. Wenn ich mich bei der ec2-Shell anmelde und versuche, die flask-App lokal auszuführen, wird sie ordnungsgemäß ausgeführt und ruft einfach Daten von der fernen cassandra ab. Aber beim Abrufen von Daten aus cassandra, werfen die von AWS eb ausgeführten App weiterhin folgende Fehler in httpd/error_log auf.Flask App läuft in AWS Bohnenstange nicht in der Lage, mit Remote-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. 

Mein 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 

Grüße

Antwort

0

Sie haben nicht Setup die Verbindung zu Cassandra zuerst. Sie müssen dies tun, bevor Sie Abfragen ausführen können.

+0

Eigentlich mache ich das in Hauptfunktion ist meine Anwendung, wenn __name__ == "__main__": connection.setup ([config.CASSANDRA_CLUSTER_IP], config.CONST_KEYSPACE, protocol_version = 3) os.environ [ "CQLENG_ALLOW_SCHEMA_MANAGEMENT"] = " Ja " sync_table (mytable) – VaibhavJain

+0

Ist die env var festgelegt? –

+0

Mein Schlechter. Ich stellte die Verbindung mit in __main__ Funktion. Die AWS-Konfiguration für Elastic Beanstalk konfiguriert die WSGI-Umgebung (Apache + WSGI im Backend). Wenn es in der EB-Umgebung ausgeführt wurde, wurde die Hauptfunktion aufgerufen. Ich habe den Verbindungscode außerhalb der Hauptfunktion verschoben und er hat angefangen zu arbeiten. – VaibhavJain

Verwandte Themen