2013-03-06 88 views
2

我想使用Neo4j的插件将我的Django应用程序部署到Heroku。 我正在使用Neo4django。本地方面,在我settings.py我有以下在Heroku上运行Django和Neo4j

NEO4J_DATABASES = { 
     'default' : { 
      'HOST':'localhost', 
      'PORT':7474, 
      'ENDPOINT':'/db/data' 
     } 
    } 

然而,部署到Heroku的时候,我将设置更改为

NEO4J_DATABASES = { 
    'default' : { 
     'HOST':'<someid>.hosted.neo4j.org', 
     'PORT':7281, 
     'ENDPOINT':'/db/data/', 

    } 
} 

..我无法连接到数据库显然是身份验证问题。 在我的堆栈跟踪底部的错误:

StatusException: Error [401]: Unauthorized. No permission -- see authorization schemes. 

需要授权

。即使当我添加由Heroku上的Neo4j提供的登录名和密码加载项。

以前有没有人遇到过类似的问题? 在此先感谢

+0

您应该优先阅读环境中的连接字符串,Neo4j有一个示例:https://github.com/neo4j-contrib/neo4j-heroku-seeds/blob/master/python/flask-py2neo/app.py – friism 2013-03-06 18:54:31

回答

2

您可以使用heroku config --app your-app看到Neo4j配置URL。只需在代码设置中使用环境变量中的NEO4J_URL即可。它已经包含基本身份验证的凭据。

+1

那么,这显然解决了认证问题,但我看到这个错误:'self._dict [attr] = ExtensionModule(self._extensions [attr],self._auth) KeyError:'GremlinPlugin'' 显然有一个Gremlin插件的问题? – 2013-03-07 08:58:56

2

Heroku托管的Neo4j有Gremlin plugin disabled,它会阻止您运行neo4django,bulbflow或需要Gremlin的任何其他客户端库。

最常见的解决方案是在AWS上运行您自己的Neo4j实例,然后连接到该实例。请您在Heroku上请Greaves支持make it clear to the Neo folks,我认为它是因为Heroku Neo4j实例的共享特性而被禁用的,但它绝对会拖垮一些库。

2

我有这个工作通过使用graphenedb.com来承载我的neo4j数据库。

他们将允许您选择您想托管的neo4j版本。如果你选择1.9.6(或更早版本),那么gremlin插件工作,neo4django也会工作。

你可以通过他们的网站注册graphenedb并在那里创建你的数据库,或者只是使用他们的英雄插件(http://blog.graphenedb.com/blog/2014/02/06/our-new-add-on-helps-heroku-users-build-applications-on-top-of-neo4j/),这将为你做这一切。我发现使用Web界面的唯一好处是您还可以获得neo4j webadmin。