2017-01-18 10 views
1

Если я импортировать 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 выглядит в основном так. Я запускаю его локально через бродячую сессию. Если я удалю logstash импорта из локальной ветви if, приложение начнет работать нормально, и я получаю локальный вывод журнала консоли.

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

Вы, вероятно, работает в this issue, у вас есть пип установлен logstash вместо python-logstash

Запуск этого и он должен работать потом:

> pip uninstall logstash 
> pip install python-logstash 
+0

Спасибо! Это была проблема. Я так долго смотрел на эту глупость, что мне не хватает всех подробностей. У меня есть как logstash, так и python-logstash в файле требований –

+0

Удивительный, рад, что это помогло! Иногда свежая пара глаз действительно помогает ;-) – Val