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.
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