2014-04-09 15 views
5

Chỉnh sửa thứ hai: Sau một chút đào, câu hỏi đã thay đổi từ cách đăng nhập ngoại lệ với biến cục bộ để ngăn chặn cần tây gửi thông điệp nhật ký thứ 2 có các vars địa phương. Sau khi cố gắng dưới đây, tôi thực sự nhận thấy rằng tôi đã luôn nhận được 2 email, một với các vars cục bộ cho mỗi khung hình và một cái khác không có.Cách ngăn chặn đăng nhập ngoại lệ trùng lặp từ tác vụ cần tây

Đầu tiên Edit: tôi đã quản lý để loại được các biến địa phương, bằng cách thêm một tùy chỉnh on_failure override (sử dụng annotations cho tất cả các công việc như vậy:

def include_f_locals(self, exc, task_id, args, kwargs, einfo): 
    import logging 
    logger = logging.getLogger('celery') 
    logger.error(exc, exc_info=einfo) 

CELERY_ANNOTATIONS = {'*': {'on_failure': include_f_locals}} 

Nhưng vấn đề bây giờ là lỗi đến 3 lần, một lần qua logger cần tây và hai lần thông qua root (mặc dù tôi không tuyên truyền logger 'cần tây' trong cài đặt đăng nhập của tôi)

câu hỏi gốc: tôi có một dự án django/cần tây để wh ich Gần đây tôi đã thêm một trình xử lý sentry làm logger gốc với mức 'ERROR'. Điều này làm việc tốt cho hầu hết các lỗi và ngoại lệ xảy ra trong django, ngoại trừ những người đến từ công nhân cần tây.

Điều gì xảy ra là sentry nhận được một ngoại lệ với traceback và người dân địa phương của daemon, nhưng không bao gồm f_locals (vars cục bộ) của mỗi khung trong ngăn xếp. Và chúng xuất hiện trong các trường hợp ngoại lệ python/django bình thường.

Tôi đoán tôi có thể cố gắng nắm bắt tất cả ngoại lệ và đăng nhập bằng exc_info theo cách thủ công. Nhưng điều này là ít hơn lý tưởng.

Trả lời

0

Hài hước, tất cả những rắc rối của tôi biến mất khi tôi chỉ đơn giản nâng cấp raven lên phiên bản sau 5.0 (cụ thể sau 5.1).

Trong khi tôi không chắc chắn làm thay đổi ngoại lệ gây ra được ghi đúng cách (với f_locals xuất hiện một cách chính xác trong sentry), nhưng sự thật vẫn là con quạ < 5.0 không làm việc cho tôi.

Ngoài ra, không cần phải thực hiện bất kỳ thao tác thủ công nào (như trên), chỉ cần xác định trình xử lý sentry cho bộ ghi chính xác là đủ để bắt ngoại lệ cũng như thông báo về các mức ghi khác.

+0

xem vấn đề liên quan đến ghi nhật ký ngăn xếp người dân địa phương và đăng nhập trùng lặp [tại đây] (https://github.com/getsentry/raven-python/issues/427) – tutuDajuju

Các vấn đề liên quan