gat*_*ado 9 python asynchronous elasticsearch
我正在寻找一个可以发出异步请求的ElasticSearch Python客户端.例如,我想写这段代码,
query1_future = es.search('/foobar', query1_json)
query2_future = es.search('/baz', query2_json) # Submit query 2 right after query 1, don't wait for its response
query1 = query1_future.get()
query2 = query2_future.get()
Run Code Online (Sandbox Code Playgroud)
但是,我没有看到支持这个的任何客户端(例如PyES或官方客户端).此外,我熟悉的两个请求逻辑与响应处理逻辑耦合,因此自己修改它们似乎很困难.也许一个充分的临时解决方案是使用异步版本的Requests,grequests?
此外,值得指出的是ElasticSearch _msearch可能是性能更好的选择,但对于实际应用程序,它需要一些代码重组.
刚遇到这个问题。有一个基于asyncio的官方异步Elasticsearch客户端:
https://github.com/elastic/elasticsearch-py-async
您还可以考虑以下选项来执行 I/O,而不使用现有客户端阻止主执行进程:
Gevent 的使用是最轻量级的(对于 RAM/CPU 资源),并且允许处理最密集的 I/O,但它也是列出的解决方案中最复杂的。另请注意,它在单进程中工作,并且要利用多核多处理包的优势。
| 归档时间: |
|
| 查看次数: |
4314 次 |
| 最近记录: |