3

GoogleAppEngineでcouchdbkitを正しく機能させるのに問題があります。ライブラリを正しくインポートしていないか、GAEのPythonサンドボックスルールに違反しています。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が許可する範囲を超えていると思い始めています。誰か考えがありますか?ありがとう。

4

2 に答える 2

1

私は自分の質問に答えるのが嫌いですが、 GAE の Python Sandbox の範囲外で何かをしようとしていたようです。ソケットに問題があったと思います。Cloudantの善良な人々は、Python/Django のより自由なホスティング オプションを提示しているこの Quora の回答を教えてくれました。

ところで、私はWebFactionを使用して、1 時間以内にすべてが正常に機能するようになりました。私はシステム管理者ではありません (ただし、無料のホスティング ソリューションは提供していません)。

于 2011-05-06T21:36:57.007 に答える
0

この例では、問題はサンドボックス ルールではなく、インポート構文にあるようです。import * from base を実行していて、それが .resource からインポートしようとしているため、不平を言っています。相対モジュール パスで import * を使用することは、Python 2.5 では許可されていません。

import * を変更して、実際に必要なものだけをインポートすることができます。

于 2011-05-06T10:40:33.307 に答える