2013-03-06 55 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。