使用Google App Engine和Vagrant的Django manage.py命令

时间:2014-05-23 12:34:59

标签: django google-app-engine google-cloud-sql

我有一个Google App Engine应用,而且我正在使用Vagrant运行Windows。我有一个Ubuntu安装,我通过vagrant ssh访问。在那台机器上,我安装了适用于Python的Google App Engine SDK,我可以使用以下代码成功部署我的应用程序:

appcfg.py update myapp --oauth2 --noauth_local_webserver

--noauth_local_parameter允许我复制oauth URL并粘贴到我的Windows机器上的浏览器中,因为在Linux机器上我没有GUI。一切都很好。

但现在我想使用Django manage.py syncdb命令在Google Cloud SQL中创建表格。问题是,当我执行该命令时,基于文本的w3n浏览器启动授权,然后我收到浏览器不支持javascript的错误消息。

我希望使用--noauth_local_webserver标志运行manage.py命令,但manage.py命令不支持此命令。我怎么解决这个问题?我已经安装了一个带有GUI的Ubuntu虚拟机,并为该应用程序提供了权限,manage.py在该机器上工作正常,但是当我尝试在Vagrant(非GUI)机器上执行该命令时,它仍然想要打开浏览器许可。

1 个答案:

答案 0 :(得分:0)

嗯,我手动将oauth .dat文件复制到vagrant服务器,manage.py syncdb现在正在运行,但网站仍然无法在浏览器中连接;它说:

No valid OAuth 2.0 credentials. Before using the Google SQL Service backend on dev_appserver, you must first run "manage.py syncdb" and proceed through the given instructions to fetch an OAuth 2.0 token.

它似乎与here的错误相同。在我的例子中,似乎没有设置必要的GOOGLE_SQL_OAUTH2_REFRESH_TOKEN环境变量。我从.dat文件中复制了此刷新令牌,并将其设置在app.yaml:

env_variables:
  GOOGLE_SQL_OAUTH2_REFRESH_TOKEN: "..."

现在一切正常。