Расскажи про интересную ошибку на предыдущей работе

Python Junior Рунити
Расскажи про интересную ошибку на предыдущей работе
Ответы
Однажды столкнулся с кейсом, когда в продакшене перестали работать Celery-таски. Оказалось, проблема была в сериализации datetime объектов при использовании pickle. В коде был декоратор, который логировал время выполнения задач: ``` import pickle from datetime import datetime def log_time(func): def wrapper(*args, **kwargs): start = datetime.now() result = func(*args, **kwargs) print(f"Execution time: {datetime.now() - start}") return result return wrapper @log_time def process_data(data): # some processing return data # При сериализации в Celery: pickle.dumps(process_data) # Ошибка! ``` Проблема: `datetime.now()` внутри декоратора пытался сериализоваться, но pickle не может корректно обработать динамически созданные объекты datetime. Фикс: заменили `datetime.now()` на передачу времени как аргумента или использовали `json` вместо `pickle` для сериализации. Вывод: всегда проверяйте сериализуемость всего, что попадает в Celery!