求助,批量查询报错Session `0' has expired

使用Python Client客户端,借助multiprocessing模块使用多个进程,创建多个GraphClient进行并发查询,查询出现如上报错提示~单独语句拷贝出来放入Console中查询是正常的。

图呢

数据可能涉及私密,可以加微信私聊么?

client是进程共享的还是进程独占的。nebula graph client不是线程安全的。

是使用的multiprocessing.Pool,不是共享的,每个进程会独自创建client并发起查询请求。

你要执行authenticate

另外我们提供了client pool,你可以参考一下示例代码

确实是authenticate的问题,抱歉。。
另外,我使用client pool,应该是增加ConnectionPool的socket_num来提高并发度吧。。但是加大了以后,效率并没有得到提升,反而下降了。。。是我用法有问题么?

1 个赞

但是加大了以后,效率并没有得到提升,反而下降了

请问你的效率没有提升,反而下降是怎么个情况?是服务处理的ops下降了吗?方便贴下你的测试过程吗?

我这边使用的是Python Client;
使用ConnectionPool效率反而下降的这个现象,是因为其他同事在导数据;所以误会了。。
但是有一个问题是确实存在的,依旧是使用Python Client的场景。
使用单线程的时长如果是300s的话,那么使用20个线程的时长依旧需要100s左右的时长,而使用多进程开20个进程并发查询的话,却大约只需要20s左右就能完成所有的查询;理论上这种查询应该是高I/O用多线程是没问题的,但是不知道为什么效率会差这么多。。

python的多线程就是就是这么慢的,你可以用协程。