Как делаешь фоновые задачи

Python Senior Билайн
Как делаешь фоновые задачи
Ответы
В Python для фоновых задач можно использовать несколько подходов: - **Потоки (threading)** - подходят для I/O-bound задач: ``` import threading def background_task(): print("Running in background") thread = threading.Thread(target=background_task) thread.start() ``` - **Процессы (multiprocessing)** - для CPU-bound задач: ``` from multiprocessing import Process def cpu_intensive(): print("CPU work") process = Process(target=cpu_intensive) process.start() ``` - **Асинхронность (asyncio)** - для I/O-bound с эффективным управлением: ``` import asyncio async def async_task(): await asyncio.sleep(1) print("Async done") asyncio.create_task(async_task()) ``` - **Очереди задач (Celery/RQ)** - для сложных распределенных задач: ``` # Пример с Celery @app.task def send_email(): # email logic ``` Выбор зависит от типа задачи: - I/O-bound → threading или asyncio - CPU-bound → multiprocessing - Долгие/распределенные → Celery/RQ Важно учитывать GIL и состояние гонки в многопоточности. Для простых задач достаточно threading, для сложных - лучше Celery.