2

最近几天我安装了 Python 2.7.3 和 Neo4J 社区版 1.8.M01。我设法让嵌入式 python 绑定工作,但由于我需要 py2neo REST 绑定,我已经安装了它们,如http://py2neo.org/中所述。此外,由于“权限被拒绝(公钥)”错误,我无法直接从 git 下载,因此我从下载部分获取了可用的 py2neo-1.2.6.tar.gz 版本。

虽然安装本身不是问题,但我无法让示例像调用 neo4j.GraphDatabaseService(' http://localhost:7474/db/data ') python 崩溃而没有任何错误消息 - Win7 64bit 只弹出显示应用程序未响应的消息。Java、Python 和 Neo4J 都在 64 位基础上运行,服务器可通过http://localhost:7474访问。我什至尝试按照此处所述强制输出:Catching a python app before it exits - 但仍然没有堆栈跟踪或错误日志。

我已经从头开始或通过 www.lfd.uci.edu/~gohlke/pythonlibs/ 提供的可执行文件安装了好几次,但没有任何东西可以让这个例子工作。

我已经安装了 tornado 2.2.1 和 pycurl 7.23.1。pycurl.version_info() 揭示: (3, '7.23.1', 464641, 'Windows', 28, 'OpenSSL/0.9.8s', 0, '1.2.5', ('gopher', 'http', 'https', 'imap', 'imaps', 'pop3', 'pop3s', 'rtsp', 'smtp', 'smtps'), None, 0, None)- 此外

c = pycurl.Curl()
c.setopt(c.URL, 'http://stackoverflow.com')
c.perform()

返回起始页的内容。

我已经通过 print-messages 跟踪堆栈跟踪到 tornado.IOLoop.start() 并进入 _run_callback() ,它实际上执行 callback() 并崩溃。不确定是否应在此处调用在 tornado.HTTPClient.fetch() 内部定义的回调函数 - 打印回调结果<tornado.stack_context._StackContextWrapper object at ...>

有关如何解决此问题的任何建议?

在此先感谢,罗马


编辑:纠正端口的错字


编辑2:经过更长的调试会话,稍微缩小了故障点,奈杰尔为我提供了一种通过交换来处理我的问题的方法

self._http = http or httpclient.HTTPClient(curl_httpclient.CurlAsyncHTTPClient)

self._http = http or httpclient.HTTPClient()

在 rest.py 的第 55 行。这是一种解决方法,但不能解决 tornado/pycurl 后面的问题。Windows 管理控制台将 pycurl.pyd 声明为崩溃的原因,并且由于一些节点(在 GraphDatabaseService 的很少功能初始化之后)存储在 Neo4J 中并且下面的调试输出不再显示,因此必须发生崩溃在发送请求和返回到主应用程序之间。我目前认为,我在 Windows 上的选择民意调查是崩溃的原因,或者 curl-handle 可能在不同线程之间共享 - 这不应该发生(http://curl.haxx.se/libcurl /c/libcurl-tutorial.html ) - 在某种程度上是 imo 最容易理解的原因

4

1 回答 1

1

得知您在使用 py2neo 时遇到问题,我们深感抱歉。我没有在 Windows 下进行任何测试,因为我只运行 Linux,所以我不确定那里是否存在任何一般的不兼容性。我也知道错误报告少于应有的数量,这受到我在项目上工作时间的限制。

也就是说,我注意到您在端口 4747 而不是默认的 7474 上运行 - 或者这是一个错字?您是否直接针对根数据库 URI 尝试过短 cURL 测试?

您似乎已经涵盖了所有基础,查看了所涉及的层,所以我不确定这里还有什么可以看的。我已经考虑添加一个选项,以便能够在 curl_httpclient 和 simple_httpclient 之间切换 - 这可能会提供另一种尝试。在接下来的几天里,我会努力解决一些问题。

尼日

于 2012-05-08T07:03:22.633 回答