1

我正在使用 pyblog 模块 (python blogger) [参见底部的 PS 了解 wordpress_xmlrpc] 来自动化 wordpress 博客上的操作,如此处所建议。Pyblog 主页描述了一个简单的使用脚本:

import pyblog
blog = pyblog.WordPress('http://www.example.com/blog/xmlrpc.api', 'USERNAME', 'PASSWORD')
print blog.get_recent_posts()

当我在本地运行它时,脚本工作正常。但是当我在谷歌应用引擎上部署它时,我遇到以下关于该blog.get_recent_posts行的错误:

return self.execute('metaWeblog.getRecentPosts', blogid, self.username, self.password, numposts)
File "/base/data/home/apps/myappname/1.371326087278559778/pyblog.py", line 93, in execute
raise BlogError(fault.faultString)
BlogError: parse error. not well formed

这指的是以下几行pyblog.py

try:
    r = getattr(self.server, methodname)(args)
except xmlrpclib.Fault, fault:
    raise BlogError(fault.faultString)

删除try/except发生的错误表示为:

Fault -32700: 'parse error. not well formed'

怎么解决?

PS:我尝试过使用python-wordpress-xmlrpc库的类似脚本。运行此处建议的示例脚本

from wordpress_xmlrpc import Client, WordPressPost
from wordpress_xmlrpc.methods.posts import GetPosts, NewPost
from wordpress_xmlrpc.methods.users import GetUserInfo

wp = Client('http://mysite.wordpress.com/xmlrpc.php', 'username', 'password')
wp.call(GetUserInfo())
<WordPressUser: max>

引发同样的错误!

4

1 回答 1

2

我怀疑问题在于 GAE 在基础上阻止了任何不使用其 URLFetch 服务的出站请求;例如,您不能使用普通的套接字。Google 的 urllib 等版本已被修改,以便它们在内部使用 URLFetch。

这是一篇古老但非常详尽的文章,讨论了类似的 XMLRPC 情况并提供了一些解决方案。

于 2013-11-05T05:32:37.807 回答