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

标签 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 文件大致如下所示。我通过 vagrant session 在本地运行它。如果我从 if 的本地分支中删除 import 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)

所有的谷歌搜索结果都是一个巨大的总和,没有任何帮助。

最佳答案

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

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

> pip uninstall logstash
> pip install python-logstash

关于在本地运行时抛出 python-logstash 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41726745/

相关文章:

python - 精度随着纪元的增加而降低

python - 我是否需要在其他模块中重新导入模块

python - 读取 Pandas 中以空格分隔的字符串数据

python - Flask/MySQL WHERE IN 子句不能只处理一个条目

php - 家园:错误! tar解压解压错误

python - Pandas Dataframe,列表列,创建累积列表集的列,并按记录差异进行记录

python - Flask 和 AngularJs

python - 使用 pytest 在 Flask 中测试服务器发送的事件

amazon-web-services - 单个 Vagrantfile 可以同时拥有 AWS 和 VirtualBox 提供商吗?

nginx - 在 Nginx 代理后面的 Vagrant 上设置 Spring boot 应用程序