2017-04-25 48 views
0

嗨我无法连接到端口7687上的本地主机 - 服务器运行吗?错误,每当我执行连接Heroku上托管的Graphenedb错误

import os 
import json 
from urllib.parse import urlparse, urlunparse 

from django.shortcuts import render 

# Create your views here. 
from py2neo import Graph, authenticate 
from bottle import get,run,request,response,static_file 
from py2neo.packages import neo4j 

url = urlparse(os.environ.get("GRAPHENEDB_GOLD_URL")) 
url_without_auth = urlunparse((url.scheme, ("{0}:{1}").format(url.hostname, url.port), '', None, None, None)) 
user = url.username 
password = url.password 
authenticate(url_without_auth,user, password) 
graph = Graph(url_without_auth, bolt = False) 

#graph = Graph(password='[email protected]') 


@get("/") 
def get_index(): 
    return static_file("index.html", root="static") 


@get("/graph") 
def get_graph(self): 
    print("i was here") 
    print("graph start") 
    results = graph.run(
     "MATCH (m:Movie)<-[:ACTED_IN]-(a:Person) " 
     "RETURN m.title as movie, collect(a.name) as cast " 
     "LIMIT {limit}", {"limit": 10}) 
    print("graph run the run") 
    nodes = [] 
    rels = [] 
    i = 0 
    for movie, cast in results: 
     #print("i am here") 
     nodes.append({"title": movie, "label": "movie"}) 
     target = i 
     i += 1 
     for name in cast: 
      print(name) 
      actor = {"title": name, "label": "actor"} 
      try: 
       source = nodes.index(actor) 
      except ValueError: 
       nodes.append(actor) 
       source = i 
       i += 1 
      rels.append({"source": source, "target": target}) 
    return {"nodes": nodes, "links": rels} 


@get("/search") 
def get_search(): 
    try: 
     q = request.query["q"] 
    except KeyError: 
     return [] 
    else: 
     results = graph.run(
      "MATCH (movie:Movie) " 
      "WHERE movie.title =~ {title} " 
      "RETURN movie", {"title": "(?i).*" + q + ".*"}) 
     response.content_type = "application/json" 
     return json.dumps([{"movie": dict(row["movie"])} for row in results]) 


@get("/movie/<title>") 
def get_movie(title): 
    results = graph.run(
     "MATCH (movie:Movie {title:{title}}) " 
     "OPTIONAL MATCH (movie)<-[r]-(person:Person) " 
     "RETURN movie.title as title," 
     "collect([person.name, head(split(lower(type(r)),'_')), r.roles]) as cast " 
     "LIMIT 1", {"title": title}) 
    row = results.next() 
    return {"title": row["title"], 
      "cast": [dict(zip(("name", "job", "role"), member)) for member in row["cast"]]} 

这段代码Python代码运行良好对我的本地系统的研究与开发,但部署在Heroku上时和graphenedb

异常的位置让连接错误:/app/.heroku/python/lib/python3 .6/site-packages/py2neo/packages/neo4j/v1/connection.py in connect,line 387

回答

1

我是来自GrapheneDB的Juanjo。

乍一看,代码看起来很好,错误代码指向了错误的URL。这可能是环境变量的问题。你能检查你的GRAPHENEDB_GOLD_URL变量吗?

你可以这样说:

$ heroku config:get GRAPHENEDB_GOLD_URL 

它应该是这样的:

http://<user>:<pass>@XXX.graphenedb.com:24789/db/data 

如果变量是空的(请不要在这里分享你的URL)

,关于检索GrapheneDB环境变量,请阅读here

如果这不是您的问题,或者问题仍然存在,您可以通过我们的管理面板上的支持链接与我们联系吗? Heroku团队会将支持凭单转发给我们,我们将把所有与您的数据库相关的信息注入票证。

感谢,

Juanjo