How do I access Production Datastore from my local development server?

后端 未结 2 1009
别那么骄傲
别那么骄傲 2020-12-18 17:09

I have a existing Website deployed in Google App Engine for Python. Now I have setup the local development server in my System. But I don\'t know how to get the updated Data

相关标签:
2条回答
  • 2020-12-18 17:26

    Check out the remote API. This will tunnel your database calls over HTTP to the production database.

    0 讨论(0)
  • 2020-12-18 17:27

    First, make sure your app.yaml enables the "remote" built-in, with a stanza such as:

    builtins:
    - remote_api: on
    

    This app.yaml of course must be the one deployed to your appspot.com (or whatever) "production" GAE app.

    Then, it's a job for /usr/local/google_appengine/bulkloader.py or wherever you may have installed the bulkloader component. Run it with -h to get a list of the many, many options you can pass.

    You may need to generate an application-specific password for this use on your google accounts page. Then, the general use will be something like:

    /usr/local/google_appengine/bulkloader.py --dump --url=http://your_app.appspot.com/_ah/remote_api --filename=allkinds.sq3
    

    You may not (yet) be able to use this "all kinds" query -- the server only generates the needed statistics for the all-kinds query "periodically", so you may get an error message including info such as:

    [ERROR   ] Unable to download kind stats for all-kinds download.
    [ERROR   ] Kind stats are generated periodically by the appserver
    [ERROR   ] Kind stats are not available on dev_appserver.
    

    If that's the case, then you can still get things "one kind at a time" by adding the option --kind=EntityKind and running the bulkloader repeatedly (with separate sqlite3 result files) for each kind of entity.

    Once you've dumped (kind by kind if you have to, all at once if you can) the production datastore, you can use the bulkloader again, this time with --restore and addressing your localhost dev_appserver instance, to rebuild the latter's datastore.

    It should be possible to explicitly list kinds in the --kind flag (by separating them with commas and putting them all in parentheses) but unfortunately I think I've found a bug stopping that from working -- I'll try to get it fixed but don't hold your breath. In any case, this feature is not documented (I just found it by studying the open-source release of bulkloader.py) so it may be best not to rely on it!-)

    More info about the then-new bulkloader can be found in a blog post by Nick Johnson at http://blog.notdot.net/2010/04/Using-the-new-bulkloader (though it doesn't cover newer functionalities such as the sqlite3 format of results in the "zero configuration" approach I outlined above). There's also a demo, with plenty of links, at http://bulkloadersample.appspot.com/ (also a bit outdated, alas).

    0 讨论(0)
提交回复
热议问题