2014-01-27 25 views
1

我遵循WERKZEUG "Shortly" here错误111以下WERKZEUG教程“不久”后

教程,我提交有效的URL后收到此错误信息。

Traceback (most recent call last) 

    File "/home/sadik/NLM/shortly/shortly.py", line 87, in __call__ 

    return self.wsgi_app(environ, start_response) 

    File "/usr/local/lib/python2.7/dist-packages/Werkzeug-0.9.4-py2.7.egg/werkzeug/wsgi.py", line 579, in __call__ 

    return self.app(environ, start_response) 

    File "/home/sadik/NLM/shortly/shortly.py", line 83, in wsgi_app 

    response = self.dispatch_request(request) 

    File "/home/sadik/NLM/shortly/shortly.py", line 33, in dispatch_request 

    return getattr(self, 'on_' + endpoint)(request, **values) 

    File "/home/sadik/NLM/shortly/shortly.py", line 45, in on_new_url 

    short_id = self.insert_url(url) 

    File "/home/sadik/NLM/shortly/shortly.py", line 72, in insert_url 

    short_id = self.redis.get('reverse-url:' + url) 

    File "/usr/local/lib/python2.7/dist-packages/redis-2.9.1-py2.7.egg/redis/client.py", line 705, in get 

    return self.execute_command('GET', name) 

    File "/usr/local/lib/python2.7/dist-packages/redis-2.9.1-py2.7.egg/redis/client.py", line 464, in execute_command 

    connection.send_command(*args) 

    File "/usr/local/lib/python2.7/dist-packages/redis-2.9.1-py2.7.egg/redis/connection.py", line 334, in send_command 

    self.send_packed_command(self.pack_command(*args)) 

    File "/usr/local/lib/python2.7/dist-packages/redis-2.9.1-py2.7.egg/redis/connection.py", line 316, in send_packed_command 

    self.connect() 

    File "/usr/local/lib/python2.7/dist-packages/redis-2.9.1-py2.7.egg/redis/connection.py", line 253, in connect 

    raise ConnectionError(self._error_message(e)) 

    ConnectionError: Error 111 connecting localhost:6379. Connection refused. 

该错误消息表示,有一些错误的本地主机:6379 代码的相关部分是在这里:

def create_app(redis_host='localhost', redis_port=6379, with_static=True): 
    app = Shortly({ 
     'redis_host':  redis_host, 
     'redis_port':  redis_port 
    }) 
    if with_static: 
     app.wsgi_app = SharedDataMiddleware(app.wsgi_app, { 
      '/static': os.path.join(os.path.dirname(__file__), 'static') 
     }) 
    return app 

if __name__ == '__main__': 
    from werkzeug.serving import run_simple 
    app = create_app() 
    run_simple('127.0.0.1', 5000, app, use_debugger=True, use_reloader=True) 

这意味着,在服务器上的本地主机上运行,​​当然:5000。那么为什么create_app函数中有另一个端口号?这使我困惑了一下。

+0

什么是错误信息?你怎么知道它是关于端口6379? – tayfun

+0

@tayfun看看回溯的底部... – MattDMo

+0

如果你用'6379'替换'5000',反之亦然? – MattDMo

回答

2

我不太熟悉werkzeug,但它看起来像缺少redis服务器,请使用您喜欢的软件包管理器安装一个,然后重试。

+1

谢谢。我通过pip安装了redis和jinja2,但出于某种原因,这还不够。 'sudo apt-get install redis-server python-jinja2'帮助了我。 – Sadik

+0

不客气。是的,redis需要作为服务器程序安装,而不是作为库,因为它似乎已经有了python连接库。 – tayfun