2009-08-11 8 views
5

Je voudrais demander quel type d'informations d'identification dois-je mettre pour importer des données en utilisant la classeQuelles informations d'identification devrais-je ajouter à Google App Engine BulkLoader sur le serveur de développement?

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

Google App Engine BulkLoader Et il me demande des informations d'identification:

S'il vous plaît entrer les informations de connexion pour localhost

Voici une extraction du contenu du models.py, j'utilise ce fichier listcountries.csvChaque tentative de saisie du courrier électronique et du mot de passe entraîne l'échec de l'authentification. Par conséquent, je n'ai pas pu importer les données sur le serveur de développement.

Je ne pense pas que je n'ai aucun problème avec mes fichiers ni mes modèles parce que j'ai réussi à télécharger les données à l'application appspot.com.
Alors, que dois-je mettre pour les informations d'identification localhost?
J'ai aussi essayé d'utiliser Eclipse avec Pydev mais je suis toujours le même message :(
Voici la sortie:

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 [email protected]: [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 

Merci

Répondre

4

Je vous recommande de suivre les conseils donnés here , et je cite:

ajouter ceci à app.yaml fichier:

-- url: /loadusers 
script: myloader.py 
login: admin 

Notez que si vous exécutez sur la machine locale de développement , commentaire de la dernière connexion ligne: admin pour que vous ne pas besoin d'un diplôme pour exécuter le bulkloader.

(mon emphase).

+0

merci Alex! Cependant, je suis actuellement confronté à un nouveau problème, je ne peux exécuter aucune commande depuis mon application de ligne de commande (Windows cmd), chaque fois que je lance le .py, il affiche toujours le fichier d'aide: -s Je suis coincé ici. Penser de changer le développement pour éclipser istead de notpad2 et de cmd: -s –

+0

@Hoang, me semble que cette question devrait aller dans une question séparée, car c'est vraiment très différent de celui-ci. –

+0

bonjour Alex, merci pour vos suggestions!Je suis en train de préparer la nouvelle question à poser à nouveau: D –

0

suivant a fonctionné pour moi:

  • enlever la ligne

    login:admin 
    

    de l'application.YAML

  • Mise à jour app cofig:

    appcfg.py update [app-id] 
    
  • (Re) à partir serveur local:

    appserver [app-id] 
    
  • données Télécharger:

    appcfg.py upload_data --config_file=album_loader.py --filename album_data.csv --kind Album --url=http://localhost:8080/remote_api ../[app-id] 
    

    demande mail et mot de passe de type quoi que ce soit

3

Edit: Regardez ma nouvelle solution

Ce problème est toujours présent. J'ai ouvert a ticket pour demander si l'authentification pourrait être contournée sur le serveur de développement local. Veuillez voter pour ce problème afin que nous puissions le résoudre [rapidement].

Je suis en mesure de télécharger des données sur le serveur dev par:

  • laissant le "login: admin" ligne app.yaml
  • ajoutant "[email protected]" à votre commande
  • appuyant sur Entrée lorsque vous êtes invité pour un mot de passe (rien requis)

Quitter le « login: admin » ligne est une bonne chose, que vous ne serez pas télécharger votre application sur les serveurs de production sans cette ligne , lequel pourrait vous exposer à quelqu'un d'ajouter des données à votre datastore ...

Blockquote

2

Oui, commenter l'exigence admin pour le remote_api:

[app.yaml]

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

Ensuite, exécutez cette commande:

 
$ bulkloader.py --dump --kind=DbMyKind --url= http://localhost:8080/remote_api --filename=export.csv --app_id=my_appid --auth_domain=localhost:8080 

Remarque: vérifiez que --auth_domain est passé et que le port approprié est passé pour localhost.

1

Vous devez d'abord créer une référence d'administrateur dans votre serveur de développement local. Avec votre firefox (ou chrome safari etc), ouvrez http://localhost:8178/remote_api, il vous sera demandé de vous connecter (sans mot de passe), entrez un email comme votre identifiant, et cochez la case login as administrater, connectez-vous. Cela vous permettra de créer un identifiant d'administrateur local, utilisez-le lors du chargement local.

Elle s'applique à tout autre administrateur requis pour l'accès local. Laisser (ou commenter) login:admin est une mauvaise pratique, car vous pourriez aussi le déployer en production. Prends soin!

+0

en fait, en supprimant le login: la ligne d'admin est inutile. spécifier l'adresse e-mail est suffisant. Mon vrai problème était un 404, et j'ai découvert cet après-midi que c'était juste un problème de commande avec les lignes d'URL dans le app.yaml. l'URL /.* devrait être la dernière, comme je l'ai découvert. Merci pour le suivi si. –

6

EUREKA: J'ai trouvé le moyen d'utiliser l'outil bulkloader.py sans avoir à entrer manuellement les informations de connexion.

Voici les 2 étapes:


configurer votre fichier app.yaml. Exemple:

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

Vous devriez le mettre AVANT votre - url: .* ligne app.yaml, sinon vous ne serez jamais accéder à l'url /remote_api.

Notez que j'ai quitté la partie login: admin, comme il est enlève très mauvaise pratique, puisque vous pouvez déployer que dans la production ...


2 Lancez cette commande (l'adapter à vos besoins).

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

L'astuce consiste à utiliser la combinaison de ces 2 paramètres:

  • --email= (vous pouvez mettre de l'adresse e-mail que vous voulez, j'utilise [email protected])
  • --passin

La spécification de --email= supprimera l'invite "Entrer les informations d'identification" et --passin permettra de lire le mot de passe stdin (c'est là le echo 'XX' | entre en jeu!)


Amusez-vous!

P.S .: N'oubliez pas de voter afin que Google puisse vous fournir un moyen plus facile à utiliser: Issue 2440.

+0

Si j'avais des points supplémentaires à donner, je le ferais. Merci beaucoup! –

1

J'utilise cette commande pour transférer des données du local au serveur distant. L'extension du fichier (json) est importante. Framework: django-nonrel, os: Win7.

manage.py dumpdata >dump.json 
manage.py remote loaddata dump.json 
2

Utilisez [email protected] pour le nom d'utilisateur.

Utilisez a pour le mot de passe.

Cela fonctionne. Magiquement.

Questions connexes