0

Hi I am getting Unable to connect to localhost on port 7687 - is the server running? error whenever my python code executing

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='vjsj56@vb')


@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"]]}

this code is running fine on my local syatem but giving connection error when deployed on heroku and graphenedb

exception location: /app/.heroku/python/lib/python3.6/site-packages/py2neo/packages/neo4j/v1/connection.py in connect, line 387

1 Answers1

1

I'm Juanjo, from GrapheneDB.

At first glance the code looks fine and the error code points to a wrong URL. It might be a problem with the environment variable. Can you please check your GRAPHENEDB_GOLD_URL variable?

You can do it like this:

$ heroku config:get GRAPHENEDB_GOLD_URL

It should be something like:

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

(please don't share your URL here)

If your variable is empty, please read more here on retrieving GrapheneDB environment variables.

If that's not your issue, or the problem persists, could you please contact us via the support link on our admin panel? Heroku team will forward the support ticket to us and we'll have all the information related to your database injected into the ticket.

Thanks,

Juanjo

Juanjo
  • 186
  • 1
  • 4