gpt4 book ai didi

python - 我应该在开发服务器上为 Google App Engine BulkLoader 输入哪些凭据?

转载 作者:太空狗 更新时间:2023-10-30 00:23:12 26 4
gpt4 key购买 nike

我想问一下,使用 Google App Engine BulkLoader 类导入数据需要提供哪种凭证

appcfg.py upload_data --config_file=models.py --filename=listcountries.csv --kind=CMSCountry --url=http://localhost:8178/remote_api vit/

然后它要求我提供凭据:

Please enter login credentials for localhost

这是 models.py 内容的提取,我使用这个 listcountries.csv文件

class CMSCountry(db.Model):
sortorder = db.StringProperty()
name = db.StringProperty(required=True)
formalname = db.StringProperty()
type = db.StringProperty()
subtype = db.StringProperty()
sovereignt = db.StringProperty()
capital = db.StringProperty()
currencycode = db.StringProperty()
currencyname = db.StringProperty()
telephonecode = db.StringProperty()
lettercode = db.StringProperty()
lettercode2 = db.StringProperty()
number = db.StringProperty()
countrycode = db.StringProperty()

class CMSCountryLoader(bulkloader.Loader):
def __init__(self):
bulkloader.Loader.__init__(self, 'CMSCountry',
[('sortorder', str),
('name', str),
('formalname', str),
('type', str),
('subtype', str),
('sovereignt', str),
('capital', str),
('currencycode', str),
('currencyname', str),
('telephonecode', str),
('lettercode', str),
('lettercode2', str),
('number', str),
('countrycode', str)
])
loaders = [CMSCountryLoader]

每次尝试输入电子邮件和密码都会导致“身份验证失败”,因此我无法将数据导入开发服务器。

我认为我的文件和模型都没有任何问题,因为我已成功将数据上传到 appspot.com 应用程序。
那么我应该为本地主机凭据输入什么?
我还尝试将 Eclipse 与 Pydev 一起使用,但我仍然收到相同的消息:(
这是输出:

Uploading data records.
[INFO ] Logging to bulkloader-log-20090820.121659
[INFO ] Opening database: bulkloader-progress-20090820.121659.sql3
[INFO ] [Thread-1] WorkerThread: started
[INFO ] [Thread-2] WorkerThread: started
[INFO ] [Thread-3] WorkerThread: started
[INFO ] [Thread-4] WorkerThread: started
[INFO ] [Thread-5] WorkerThread: started
[INFO ] [Thread-6] WorkerThread: started
[INFO ] [Thread-7] WorkerThread: started
[INFO ] [Thread-8] WorkerThread: started
[INFO ] [Thread-9] WorkerThread: started
[INFO ] [Thread-10] WorkerThread: started
Password for foobar@nowhere.com: [DEBUG ] Configuring remote_api. url_path = /remote_api, servername = localhost:8178

[DEBUG ] Bulkloader using app_id: abc
[INFO ] Connecting to /remote_api
[ERROR ] Exception during authentication
Traceback (most recent call last):
File "D:\Projects\GoogleAppEngine\google_appengine\google\appengine\tools\bulkloader.py", line 2802, in Run
request_manager.Authenticate()
File "D:\Projects\GoogleAppEngine\google_appengine\google\appengine\tools\bulkloader.py", line 1126, in Authenticate
remote_api_stub.MaybeInvokeAuthentication()
File "D:\Projects\GoogleAppEngine\google_appengine\google\appengine\ext\remote_api\remote_api_stub.py", line 488, in MaybeInvokeAuthentication
datastore_stub._server.Send(datastore_stub._path, payload=None)
File "D:\Projects\GoogleAppEngine\google_appengine\google\appengine\tools\appengine_rpc.py", line 344, in Send
f = self.opener.open(req)
File "C:\Python25\lib\urllib2.py", line 381, in open
response = self._open(req, data)
File "C:\Python25\lib\urllib2.py", line 399, in _open
'_open', req)
File "C:\Python25\lib\urllib2.py", line 360, in _call_chain
result = func(*args)
File "C:\Python25\lib\urllib2.py", line 1107, in http_open
return self.do_open(httplib.HTTPConnection, req)
File "C:\Python25\lib\urllib2.py", line 1082, in do_open
raise URLError(err)
URLError: <urlopen error (10061, 'Connection refused')>
[INFO ] Authentication Failed

谢谢!

最佳答案

EUREKA:我找到了无需手动输入登录凭据即可使用 bulkloader.py 工具的方法。

这里有两个步骤:


设置您的 app.yaml 文件。示例:

- url: /remote_api
script: $PYTHON_LIB/google/appengine/ext/remote_api/handler.py
login: admin

你应该把它放在 app.yaml 中的 - url: .* 行之前,否则你将永远无法访问 /remote_api url .

请注意,我已经离开了 login: admin 部分,因为删除它是一种非常糟糕的做法,因为您可能会将其部署到生产中...


2 启动此命令(根据您的需要进行调整)。

echo 'XX' | python2.5 ../google_appengine/bulkloader.py --dump --kind=NAMEOFMODEL --url=http://localhost:8080/remote_api --filename=FILENAME --app_id=APPID --email=foobar@nowhere.com --passin .

诀窍是使用这两个参数的组合:

  • --email=(你可以输入任何你想要的电子邮件地址,我使用foobar@nowhere.com)
  • --passin

指定 --email= 将抑制“输入凭据”提示,而 --passin 将允许从 stdin 读取密码(这就是 echo 'XX' | 发挥作用的地方!)


尽情享受吧!

P.S.:不要忘记投票,以便 Google 可以提供一种更易于使用的方式来做到这一点:Issue 2440 .

关于python - 我应该在开发服务器上为 Google App Engine BulkLoader 输入哪些凭据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1260835/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com