Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

python-logstash error thrown while running locally

If I import logstash, running locally I get the following error

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

my app.py file looks mostly like this. I run it locally through a vagrant session. If I remove the import logstash from the local branch of the if, the application starts up fine and I get local console log output.

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)

All of the google searches result in a great big fat sum total of nothing helpful.

like image 732
Linton Caldecott Avatar asked Oct 30 '25 06:10

Linton Caldecott


1 Answers

You're probably running into this issue, you have pip installed logstash instead of python-logstash

Run this and it should work afterwards:

> pip uninstall logstash
> pip install python-logstash
like image 63
Val Avatar answered Oct 31 '25 18:10

Val



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!