CherryPy& php:无法从pickle加载数据类,但可以在服务器上使用ssh

时间:2012-06-04 14:09:09

标签: php json class pickle cherrypy

我正在使用CherryPy来生成和解析php网页的数据,但是收到一个我无法在本地或通过SSH复制的错误(登录到服务器并从提示符运行python脚本工作正常)。

当前的粘性错误消息是:

File "modules/flex.py", line 335, in convert
    ref_data = cPickle.load(f2)
AttributeError: 'module' object has no attribute 'Data'

另一个pickle在前一行中加载正常,并且两个pickle都表示具有各种词典和列表列表的类对象。但其中一个是作品,另一个则没有。

通常使用CherryPy,隔离错误消息的最佳方法是什么?我可以从它的URL运行/ cp / function,我可以查看webserver错误日志,但即使这两个也不总是给出错误消息(或正确的错误)。

另一方面,在php中,我使用此代码检索表示python列表列表的json对象:

$obj = file_get_contents($senddata);
$sue = json_decode($obj);

这是可接受的方法吗?从python数据结构传递和生成php数组的最佳方法是什么?

1 个答案:

答案 0 :(得分:1)

我认为你有不同的问题:

  1. 您的代码无效,因为PYTHONPATH(sys.path)不一样 在你的python解释器中,当你通过ssh和python连接时 正在运行以服务webapp。我这样说是因为你想要反序列化 来自模块的数据,它确实存在(否则将是ImportError) 但是没有class的{​​{1}}声明,可能是一个相同的文件 名称,因为该模块位于同一目录中并尝试查找Data 在那个文件中。序列化时,不要保存类声明,只是如何 重建那个对象。

  2. 对于“正确的错误”是什么意思?,环境时 是“生产”,CherryPy默认记录最后一个错误的回溯, 您当然可以使用custom error handling更改默认行为。

  3. 您应该坚持使用JSON进行语言之间的通信,这是非常标准的 并且有效地进行双方解析。

  4. 我希望有所帮助。