在Google App Engine上使用couchdbkit(第三方库)

时间:2011-05-06 03:57:44

标签: python google-app-engine cloudant couchdbkit

我很难让couchdbkit在Google App Engine上正常运行。我要么没有正确导入我的库,要么与GAE's Python Sandbox rules发生冲突。任何人都知道在GAE上使用couchdbkit时是否需要包含restkit(这是一些问题的来源)?

这是我的配置:

的app.yaml
zapdome.py
couchdbkit /
restkit /

我已将zapdome.py剥离为基础(连接到我的CouchDB数据库服务器):

#! /usr/bin/env python

import urllib, httplib, datetime
from couchdbkit.schema.base import *
from couchdbkit.schema.properties import *
from couchdbkit.client import Server

USERNAME = ''
PASSWORD = ''

class QuoteEntry(Document):
    name = StringProperty()
    symbol = StringProperty()
    price = StringProperty()
server = Server('https://' + USERNAME + ':' + PASSWORD + '@' + USERNAME + '.cloudant.com/')

这些是我正在记录的错误:

E 2011-05-05 20:39:31.309
Traceback (most recent call last):
E 2011-05-05 20:39:31.309
  File "/base/data/home/apps/zapdome/1.350215157753999092/restkit/__init__.py", line 12, in <module>
E 2011-05-05 20:39:31.309
    from .client import Client, MAX_FOLLOW_REDIRECTS
E 2011-05-05 20:39:31.309
  File "/base/data/home/apps/zapdome/1.350215157753999092/restkit/client.py", line 21, in <module>
E 2011-05-05 20:39:31.309
    from httplib import FakeSocket
E 2011-05-05 20:39:31.309
ImportError: cannot import name FakeSocket
E 2011-05-05 20:39:31.309
Traceback (most recent call last):
E 2011-05-05 20:39:31.309
  File "/base/data/home/apps/zapdome/1.350215157753999092/couchdbkit/__init__.py", line 10, in <module>
E 2011-05-05 20:39:31.310
    from .resource import  RequestFailed, CouchdbResource
E 2011-05-05 20:39:31.310
  File "/base/data/home/apps/zapdome/1.350215157753999092/couchdbkit/resource.py", line 25, in <module>
E 2011-05-05 20:39:31.310
    from restkit import Resource, ClientResponse
E 2011-05-05 20:39:31.310
ImportError: cannot import name Resource
E 2011-05-05 20:39:31.310
<type 'exceptions.SyntaxError'>: 'import *' not allowed with 'from .' (__init__.py, line 159)
Traceback (most recent call last):
  File "/base/data/home/apps/zapdome/1.350215157753999092/zapdome.py", line 4, in <module>
    from couchdbkit.schema.base import * 

由于它在httplib.FakeSocket和restkit.Resource上窒息,我开始认为我超出了GAE允许的范围。有人有什么想法?感谢。

2 个答案:

答案 0 :(得分:1)

我不想回答我自己的问题,但似乎我试图在GAE's Python Sandbox的范围之外做事。我认为插件的问题很突出。 Cloudant的优秀人员向我指出this Quora answer为Python / Django提供了更自由的托管选项。

顺便说一句,我和WebFaction一起去了,一小时内一切正常,我绝对不是系统管理员(但他们不提供免费托管解决方案)。

答案 1 :(得分:0)

在这种情况下,问题看起来是导入语法而不是沙盒规则。这是抱怨,因为你正在从base执行import *,然后尝试从.resource导入。在Python 2.5中不允许使用import *和相对模块路径。

您可以尝试更改导入*以仅导入您实际需要的内容,例如文献