尝试从侦听器python Web框架访问对象

问题描述 投票:0回答:1

对于新手来说,这是我的问题,在此先感谢您。嗨,所有非常简单的问题,我可能都想太多了。

我正在尝试访问下面已注册到Sanic主应用程序的已定义侦听器之外的cassandra客户端。>>

我需要会话才能使用将异步执行的更新查询。我可以从下面的“ setup_cassandra_session_listener”方法中定义连接和事件查询。但是很难弄清楚如何在外部调用此Cassandra会话并隔离,以便我可以在其他位置访问。

from aiocassandra import aiosession
from cassandra.cluster import Cluster
from sanic import Sanic
from config import  CLUSTER_HOST, TABLE_NAME, CASSANDRA_KEY_SPACE, CASSANDRA_PORT, DATA_CENTER, DEBUG_LEVEL,  LOGGER_FORMAT


log = logging.getLogger('sanic')
log.setLevel('INFO')


cassandra_cluster = None


def setup_cassandra_session_listener(app, loop):
    global cassandra_cluster

    cassandra_cluster = Cluster([CLUSTER_HOST], CASSANDRA_PORT, DATA_CENTER)
    session = cassandra_cluster.connect(CASSANDRA_KEY_SPACE)

    metadata = cassandra_cluster.metadata

    app.session = cassandra_cluster.connect(CASSANDRA_KEY_SPACE)
    log.info('Connected to cluster: ' + metadata.cluster_name)

    aiosession(session)
    app.cassandra = session


def teardown_cassandra_session_listener(app, loop):
    global cassandra_cluster
    cassandra_cluster.shutdown()


def register_cassandra(app: Sanic):
    app.listener('before_server_start')(setup_cassandra_session_listener)
    app.listener('after_server_stop')(teardown_cassandra_session_listener)

对于新手来说,这是我的问题,在此先感谢您。大家好,我可能会考虑太多非常简单的问题。我正在尝试访问这些...之外的cassandra客户端...

python-asyncio sanic
1个回答
0
投票

这里是一个可行的示例,应该可以满足您的需求。它实际上并没有运行Cassandra(因为我没有这样做的经验)。但是,原则上,这应该可以与您需要在运行服务器的整个生命周期内进行管理的任何数据库连接一起使用。

© www.soinside.com 2019 - 2024. All rights reserved.