在本地运行时抛出python-logstash错误

时间:2017-01-18 18:22:37

标签: python flask vagrant logstash

如果我导入logstash,在本地运行,我会收到以下错误

Connected to pydev debugger (build 162.1812.1)
/home/vagrant/.envs/emailservice/lib/python3.4/site-packages/flask/exthook.py:71: ExtDeprecationWarning: Importing flask.ext.cache is deprecated, use flask_cache instead.
  .format(x=modname), ExtDeprecationWarning
Traceback (most recent call last):
  File "/home/vagrant/.pycharm_helpers/pydev/pydevd.py", line 1580, in <module>
    globals = debugger.run(setup['file'], None, None, is_module)
  File "/home/vagrant/.pycharm_helpers/pydev/pydevd.py", line 964, in run
    pydev_imports.execfile(file, globals, locals)  # execute the script
  File "/home/vagrant/.pycharm_helpers/pydev/_pydev_imps/_pydev_execfile.py", line 18, in execfile
    exec(compile(contents+"\n", file, 'exec'), glob, loc)
  File "/emailService/app.py", line 59, in <module>
    import logstash
  File "/home/vagrant/.envs/emailservice/lib/python3.4/site-packages/logstash/__init__.py", line 2, in <module>
    from event import Event
ImportError: No module named 'event'

Process finished with exit code 1

我的app.py文件看起来很像这样。我通过流浪会话在本地运行它。如果我从if的本地分支中删除导入logstash,应用程序启动正常,我得到本地控制台日志输出。

import logging
import os
import sys

from flask import Flask
from flask_restful import Api
from flask_cache import Cache
from flask_sqlalchemy import SQLAlchemy
from opbeat.contrib.flask import Opbeat

from tasks import make_celery


app = Flask(__name__)
app.secret_key = os.environ.get('SECRET_KEY', 'SUCHSECRETSWOW')
app.config.from_object(os.environ.get('APP_SETTINGS', 'config.DevelopmentConfig'))
cache = Cache(app)
db = SQLAlchemy(app)
api = Api(app)
celery = make_celery(app)

if len(app.config['OPBEAT_ORGANIZATION_ID']):
    opbeat = Opbeat(
        app,
        organization_id=app.config['OPBEAT_ORGANIZATION_ID'],
        app_id=app.config['OPBEAT_APP_ID'],
        secret_token=app.config['OPBEAT_SECRET_TOKEN'],
    )

@app.after_request
def after_request(response):
    response.headers.add('Access-Control-Allow-Origin', '*')
    response.headers.add('Access-Control-Allow-Headers', 'Content-Type,Authorization')
    response.headers.add('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE')
    return response


def clear_cache():
    cache.clear()


def start_resources():
    from emailService.api import HealthApi

    api.add_resource(HealthApi, '/health')


def start_tasks():
    from emailService.tasks import KickoffFetchEmailPeriodTask


if __name__ == '__main__':

    if app.config.get('DEVELOPMENT', False):
        #The reason this exists is purely because of my error.
        import logstash
        app.logger.setLevel(logging.DEBUG)
        app.logger.addHandler(logging.StreamHandler())

    else:
        import logstash
        app.logger = logging.getLogger('python-logstash-logger')
        app.logger.setLevel(logging.INFO)
        app.logger.addHandler(logstash.LogstashHandler('myhost.veryhost.suchhost', 5959, version=1))
        app.logger.addHandler(logging.StreamHandler())

    clear_cache()
    start_tasks()
    start_resources()

    app.logger.debug('Starting app')

    app.run(host='0.0.0.0', port=16600, debug=True, use_reloader=False)

所有谷歌搜索都会产生很大的帮助。

1 个答案:

答案 0 :(得分:2)

您可能已经遇到this issue,您已经安装了logstash而不是python-logstash

运行它,之后应该可以运行:

> pip uninstall logstash
> pip install python-logstash