0

我是 Google App Engine 和 Python 的新手。我几乎完成了一个项目,但无法让 get_serving_url() 函数工作。根据文档,我已将所有内容简化为最基本的功能。但是我仍然从服务器收到 500 错误。有什么想法吗?这是代码:

from google.appengine.api import images

....

class Team(db.Model):
    avatar = db.BlobProperty()

    ....

    def to_dict(self):
        ....
        image_url = images.get_serving_url(self.avatar.key())

最后一行是问题......将其注释掉会使应用程序运行良好。但它几乎是直接从文档中复制而来的。我应该注意,我可以通过以下方式直接下载头像 blob:

class GetTeamAvatar(webapp2.RequestHandler):
def post(self):
    team_id = self.request.get('team_id')
    team = Team.get_by_id(long(team_id))
    self.response.write(team.avatar)

所以我知道它存储正确。我的机器上没有 PIL……是这个问题吗?数据存储的图像 API 说它在本地有 PIL,所以如果我正在部署我的应用程序,它应该没关系,对吧?我有 Python 3.3,显然 PIL 停在 2.6。

4

2 回答 2

2

Python appengine 运行时间是 2.7,(OK 和 2.5)所以甚至不要尝试使用 3.x。

其次,get_serving_URL 是您使用 BlobStore 实体键而不是 BlobProperty 调用的方法。

你在这里混淆了两个不同的东西。

我将专注于让您的代码首先在 2.7 下正确地在本地运行,并且 PIL 可用于 2.7。

于 2013-03-24T00:51:27.250 回答
0

如果您尝试部署您的应用程序,甚至没有在本地测试它,我印象非常深刻。

您需要做的一件事是通过 library 属性在您的 app.yaml 中提供 PIL。

于 2013-03-24T05:29:01.433 回答