Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add support for sending exceptions to Sentry #27

Open
cdrx opened this issue Apr 9, 2020 · 5 comments
Open

Add support for sending exceptions to Sentry #27

cdrx opened this issue Apr 9, 2020 · 5 comments

Comments

@cdrx
Copy link
Owner

cdrx commented Apr 9, 2020

No description provided.

@TonsOfFun
Copy link

Could we use the Worker._fail to send notifications to error monitors.

@TonsOfFun
Copy link

TonsOfFun commented Jun 20, 2023

Something like this:

import honeybadger
from faktory import Worker

# Configure Honeybadger
honeybadger.configure(api_key = 'your_api_key')

class HoneybadgerWorker(Worker):
    def _fail(self, jid: str, exception=None):
        response = {"jid": jid}
        if exception is not None:
            response["errtype"] = type(exception).__name__
            response["message"] = str(exception)
            # notify Honeybadger of the exception
            honeybadger.context(jid=jid)
            honeybadger.notify(exception)

        self.faktory.reply("FAIL", response)
        ok = next(self.faktory.get_message())

# Now, when you create a new worker class, inherit from HoneybadgerWorker instead of Worker

class MyWorker(HoneybadgerWorker):
    # Your worker code goes here
    pass

@cdrx
Copy link
Owner Author

cdrx commented Jun 20, 2023

What you suggested is roughly how I would implement it; only I wouldn't duplicate the existing worker code. Something like this is safer:

    def _fail(self, jid: str, exception=None):
        super()._fail(jid, exception)
        if exception is not None:
            honeybadger.context(jid=jid)
            honeybadger.notify(exception)

@cdrx
Copy link
Owner Author

cdrx commented Jun 20, 2023

One other thing. I have no idea what honeybadger is, but if you are using threads then this does not look safe to me:

honeybadger.context(jid=jid)
honeybadger.notify(exception)

Feels a little sketchy.

@TonsOfFun
Copy link

Yeah I was wondering about that, in terms of overriding the _fail behavior. Honeybadger is an error monitoring provider, but not sure on thread safety in this case. I'll have to test it out, thanks for the input!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants