Я запускаю приложение фляги python(3.4)
на awas beanstalk. Когда я вхожу в оболочку ec2 и пытаюсь запустить приложение flask локально, он работает правильно и легко извлекает данные с удаленного cassandra
. Но, получая данные от cassandra
, приложение, выполняемое AWS eb, продолжает бросать следующие ошибки в httpd/error_log.Приложение с флягой, работающим в AWS beanstalk, не может подключиться к удаленной 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.
Мой окр:
(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 set? –
Плохо. Я установил соединение с помощью функции __main__. Конфигурация AWS для Elastic Beanstalk настраивает среду WSGI (это Apache + WSGI в бэкэнд). Когда он запускался в среде EB, основная функция вызывалась. Я переместил код подключения вне основной функции и начал работать. – VaibhavJain