gpt4 book ai didi

python - 第一次调用 openrdf-sesame 更新端点非常慢。有没有办法优化它?

转载 作者:太空宇宙 更新时间:2023-11-04 09:01:53 25 4
gpt4 key购买 nike

我们有一些 python 脚本来执行 sparql 查询和“更新”(插入/删除)。这是大部分相关代码(我认为):

server = "localhost"
repo = "test"
query_endpoint = "http://%s:8080/openrdf-sesame/repositories/%s" % (server,repo)
update_endpoint = "http://%s:8080/openrdf-sesame/repositories/%s/statements" % (server,repo)


def execute_query(query):
params = { 'query': query }
headers = {
'content-type': 'application/x-www-form-urlencoded',
'accept': 'application/sparql-results+json'
}
(response, content) = httplib2.Http().request(endpoint, 'POST', urllib.urlencode(params),headers=headers)
return (response,ast.literal_eval(content))

def execute_update(query):
params = { 'update': query }
headers = {
'content-type': 'application/x-www-form-urlencoded',
'accept': 'application/sparql-results+json'
}
(response, content) = httplib2.Http().request(update_endpoint, 'POST', urllib.urlencode(params),headers=headers)
return True

我们对 execute_query 的所有调用都非常快,不到 1 秒即可完成。但是,第一次调用 execute_update 需要很长时间(16 秒)。第一个调用之后的每个调用都在不到 1 秒的时间内运行。我们正在运行 sesame 版本 2.7.12(我们认为从 sesame 版本 2.7.3 升级可能会有帮助,但作用不大)。我们只有两三千个三元组。这一切都是从 CGI 脚本运行的,所以我们不能真的只是让 python session 保持事件状态来进行更新调用(无论如何这不是工作台的工作吗?)。关于第一次调用 update_endpoint 花费这么长时间的任何想法?其他人有同样的问题吗?有什么建议的解决方案吗?

谢谢!

编辑我听从了 RobV 的建议,但我仍然遇到同样的问题。来自 tshark 的日志文件:

 22.577578   10.10.2.43 -> 10.10.2.43   HTTP POST /openrdf-sesame/repositories/test HTTP/1.1 
22.578261 10.10.2.43 -> 10.10.2.43 HTTP Continuation or non-HTTP traffic
22.583422 10.10.2.43 -> 10.10.2.43 HTTP HTTP/1.1 200 OK (application/sparql-results+json)
22.583857 10.10.2.43 -> 10.10.2.43 HTTP Continuation or non-HTTP traffic
22.591122 10.10.2.43 -> 10.10.2.43 HTTP POST /openrdf-sesame/repositories/test/statements HTTP/1.1
22.591388 10.10.2.43 -> 10.10.2.43 HTTP Continuation or non-HTTP traffic
35.020398 10.10.2.43 -> 10.10.2.43 HTTP HTTP/1.1 204 No Content
35.025605 10.10.2.43 -> 10.10.2.43 HTTP POST /openrdf-sesame/repositories/test/statements HTTP/1.1
35.025911 10.10.2.43 -> 10.10.2.43 HTTP Continuation or non-HTTP traffic
35.040606 10.10.2.43 -> 10.10.2.43 HTTP HTTP/1.1 204 No Content
35.045937 10.10.2.43 -> 10.10.2.43 HTTP POST /openrdf-sesame/repositories/test/statements HTTP/1.1
35.046080 10.10.2.43 -> 10.10.2.43 HTTP Continuation or non-HTTP traffic
35.049359 10.10.2.43 -> 10.10.2.43 HTTP HTTP/1.1 204 No Content
35.053776 10.10.2.43 -> 10.10.2.43 HTTP POST /openrdf-sesame/repositories/test/statements HTTP/1.1
35.053875 10.10.2.43 -> 10.10.2.43 HTTP Continuation or non-HTTP traffic
35.056937 10.10.2.43 -> 10.10.2.43 HTTP HTTP/1.1 204 No Content

您可以在第一次调用/statements 端点时看到很大的差距。

最佳答案

当我们创建存储库时,我们将其创建为“内存存储”存储库。我创建了一个“Native Java Store”类型的新存储库,现在我的第一次调用很快(因为所有都是后续调用)。

关于python - 第一次调用 openrdf-sesame 更新端点非常慢。有没有办法优化它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24533675/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com