如何在FastApi中使用AsyncElasticsearch连接池?
我的代码的相关部分如下:
@app.on_event("startup")
async def startup():
es = Translator()
app.state.es_conn = es.connect()
@app.on_event('shutdown')
async def shutdown_event():
es = Translator()
await es.close(app.state.es_conn)
@app.post('/query')
async def query(req: Request):
es = Translator()
es.set_conn(req.app.state.es_conn)
return await es.search()
from elasticsearch import AsyncElasticsearch, AsyncTransport
class Translator(object):
def __init__(self):
self.__es = None
def connect(self):
return AsyncElasticsearch(
hosts='http://192.168.0.2:9200/',
transport_class=AsyncTransport)
def set_conn(self, conn):
self.__es = conn
async def close(self, conn):
await conn.close()
self.__es = None
async def search(self):
return await self.__es.search(index=index, body=body)
它运行在以下环境中:
- PyPy 7.3.7
- fastapi 0.73.0
- Elasticsearch 7.10.1
我的问题是:
- 虽然代码可以正常工作,但如何检测它是否使用连接池?
- 异步时如何正确使用连接池?
有人可以帮助我吗?谢谢你!
The relevant parts of my code are as follows:
@app.on_event("startup")
async def startup():
es = Translator()
app.state.es_conn = es.connect()
@app.on_event('shutdown')
async def shutdown_event():
es = Translator()
await es.close(app.state.es_conn)
@app.post('/query')
async def query(req: Request):
es = Translator()
es.set_conn(req.app.state.es_conn)
return await es.search()
from elasticsearch import AsyncElasticsearch, AsyncTransport
class Translator(object):
def __init__(self):
self.__es = None
def connect(self):
return AsyncElasticsearch(
hosts='http://192.168.0.2:9200/',
transport_class=AsyncTransport)
def set_conn(self, conn):
self.__es = conn
async def close(self, conn):
await conn.close()
self.__es = None
async def search(self):
return await self.__es.search(index=index, body=body)
It runs in the following environment:
- PyPy 7.3.7
- fastapi 0.73.0
- Elasticsearch 7.10.1
My question are:
- Although the code can work normally, how can I detect whether it uses connection pool?
- How to use connection pool correctly when asynchronous?
Can anyone help me? Thank you!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论