Инструмент недели: планирование задач с Rocketry
Rocketry — это фреймворк для планирования задач в Python, который позволяет легко управлять задачами и их выполнением с помощью простых выражений.
👇 В этом посте мы покажем, как быстро настроить планировщик задач, используя Rocketry.
1⃣ Установите Rocketry
Для начала установите Rocketry с помощью pip:
2⃣ Напишите первый планировщик задач
Создайте файл, например,
Этот код создаёт задачу, которая выполняется каждый день. Планировщик будет работать в фоновом режиме, выполняя задачу каждый день.
3⃣ Запуск задач
После написания кода запустите его с помощью Python:
Теперь ваша задача будет выполняться каждый день.
4⃣ Настройка различных условий
Rocketry позволяет настраивать задачи с использованием различных условий.
▶️ Задача, выполняющаяся каждые 10 секунд:
▶️ Задача, выполняющаяся каждый день после 7:00:
▶️ Задача, выполняющаяся каждый час между 22:00 и 06:00:
▶️ Задача, выполняющаяся по cron-выражению:
5⃣ Пайплайнинг задач
Rocketry поддерживает пайплайнинг задач — передача данных между задачами:
6⃣ Параллельное выполнение задач
Rocketry поддерживает выполнение задач в разных режимах: синхронно, асинхронно, в отдельных потоках и процессах:
▶️ С помощью Rocketry вы можете автоматизировать задачи с минимальными усилиями, будь то для небольших проектов или для масштабных приложений.
Proglib Academy #буст
Rocketry — это фреймворк для планирования задач в Python, который позволяет легко управлять задачами и их выполнением с помощью простых выражений.
Для начала установите Rocketry с помощью pip:
pip install rocketry
Создайте файл, например,
scheduler.py
, и добавьте в него следующий код:from rocketry import Rocketry
from rocketry.conds import daily
app = Rocketry()
@app.task(daily)
def do_daily():
print("Эта задача выполняется каждый день!")
if __name__ == '__main__':
app.run()
Этот код создаёт задачу, которая выполняется каждый день. Планировщик будет работать в фоновом режиме, выполняя задачу каждый день.
После написания кода запустите его с помощью Python:
python scheduler.py
Теперь ваша задача будет выполняться каждый день.
Rocketry позволяет настраивать задачи с использованием различных условий.
@app.task(every("10 seconds"))
def do_continuously():
print("Эта задача выполняется каждую секунду!")
@app.task(daily.after("07:00"))
def do_daily_after_seven():
print("Эта задача выполняется каждый день после 7:00!")
@app.task(hourly & time_of_day.between("22:00", "06:00"))
def do_hourly_at_night():
print("Эта задача выполняется каждый час ночью!")
@app.task(cron("* 2 * * *"))
def do_based_on_cron():
print("Эта задача выполняется по cron-выражению!")
Rocketry поддерживает пайплайнинг задач — передача данных между задачами:
from rocketry.conds import daily, after_success
from rocketry.args import Return
@app.task(daily.after("07:00"))
def do_first():
return 'Hello World'
@app.task(after_success(do_first))
def do_second(arg=Return('do_first')):
print(f"Задача 'do_first' вернула: {arg}")
return 'Hello Python'
Rocketry поддерживает выполнение задач в разных режимах: синхронно, асинхронно, в отдельных потоках и процессах:
@app.task(daily, execution="main")
def do_unparallel():
print("Эта задача выполняется синхронно.")
@app.task(daily, execution="async")
async def do_async():
print("Эта задача выполняется асинхронно.")
@app.task(daily, execution="thread")
def do_on_separate_thread():
print("Эта задача выполняется в отдельном потоке.")
@app.task(daily, execution="process")
def do_on_separate_process():
print("Эта задача выполняется в отдельном процессе.")
Proglib Academy #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
🎯 Команда дня: `@overload` в Python
Пример:
—
—
— Типизация подскажет ошибку, если вы вызовете
Другой кейс — когда нужен только один аргумент из двух:
Так можно добиться:
✅
✅
🙅♂️
Бонус:
▶️ Попытка передать yellow вызовет ошибку ещё до выполнения кода.
▶️ @overload и Literal — мощные инструменты статической проверки, особенно в больших проектах, где важна точная типизация.
Proglib Academy #буст
@overload
из модуля typing
позволяет указать несколько сигнатур для одной функции. Это особенно полезно, когда возвращаемый тип зависит от аргументов — и вы хотите, чтобы типизация отражала это поведение.Пример:
from typing import Literal, overload
@overload
def transform(data: str, mode: Literal["split"]) -> list[str]: ...
@overload
def transform(data: str, mode: Literal["upper"]) -> str: ...
def transform(data: str, mode: Literal["split", "upper"]) -> list[str] | str:
return data.split() if mode == "split" else data.upper()
—
transform(..., "split")
→ list[str]
—
transform(..., "upper")
→ str
— Типизация подскажет ошибку, если вы вызовете
append()
у строки или .lower()
у спискаДругой кейс — когда нужен только один аргумент из двух:
@overload
def get_user(id: int = ..., username: None = None) -> User: ...
@overload
def get_user(id: None = None, username: str = ...) -> User: ...
def get_user(id: int | None = None, username: str | None = None) -> User: ...
Так можно добиться:
get_user(id=1)
get_user(username="John")
get_user(id=1, username="John")
— не соответствует ни одной сигнатуреБонус:
Literal
позволяет ограничить значения аргументов строками:def set_color(color: Literal["red", "blue", "green"]) -> None: ...
Proglib Academy #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
Что выведет код?
🔥 — [1, 2, 3, 4, 5, 6]
🙏 — (1, 2, 3, 4, 5, 6, 1, 2, 3, 4, 5, 6)
🌚 — Error
😢 — None
Proglib Academy #междусобойчик
🙏 — (1, 2, 3, 4, 5, 6, 1, 2, 3, 4, 5, 6)
😢 — None
Proglib Academy #междусобойчик
Please open Telegram to view this post
VIEW IN TELEGRAM
🌚10🔥1🙏1
Всю неделю сижу в режиме обучения от ChatGPT — читаю, спрашиваю, проверяю, снова читаю.
А вы как проводили свою неделю обучения?
Что нового узнали, чему научились, что залипло в голове?
Proglib Academy #междусобойчик
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥1
Энтузиаст научил скворца запоминать и воспроизводить png-файл в виде звукового сигнала
Есть тут, кто хочет передавать данные в скворцах?
Proglib Academy #развлекалово
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2👏2🔥1
В карточках рассказали, как увеличить вашу видимость и привлекательность для потенциальных работодателей, тем самым сокращая время поиска работы и увеличивая вероятность успешного трудоустройства.
Proglib Academy #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2😁2
Генерация текста — это не просто «угадай следующее слово».
Модель оценивает вероятности, а дальше всё зависит от стратегии:
Proglib Academy #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1
Если в 2012 все грызли техничку и мясо, то теперь — «3 признака, что вас скоро сократят».
И да, 2020-й был годом великого «вката». Мы ещё не оправились.
А вы на каком этапе? Только вкат или уже ищете третьего работодателя сразу?
Proglib Academy #междусобойчик
Please open Telegram to view this post
VIEW IN TELEGRAM
👾1
Если вы собирали ML-пайплайны «на коленке», писали ботов и скорили таблички ради интереса — поздравляю, вы уже работали дата-сайентистом. Просто без бейджика и офиса.
Главное — правильно подать это в резюме.
Proglib Academy #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔 Зачем вообще понимать, как работает ML?
Сейчас многие просто запускают модельку в sklearn — и радуются точности 0.92.
Машинное обучение — это система, которую можно понять.
Если знаешь, что делает градиентный спуск, зачем нужен бустинг и как дерево принимает решения — ты не просто «запускаешь», ты управляешь моделью.
👉 Мы сделали курс, чтобы в это было реально въехать:
— без сложных формул;
— с интуитивными объяснениями;
— от простого к сложному.
Если хочешь перейти от «гуглю код» к «понимаю, как это работает» — ты по адресу!
❗Стартуем в сентябре — бронируй место на курсе уже сейчас
Сейчас многие просто запускают модельку в sklearn — и радуются точности 0.92.
Вроде всё работает… но почему?
А когда сломается — что делать?
Машинное обучение — это система, которую можно понять.
Если знаешь, что делает градиентный спуск, зачем нужен бустинг и как дерево принимает решения — ты не просто «запускаешь», ты управляешь моделью.
👉 Мы сделали курс, чтобы в это было реально въехать:
— без сложных формул;
— с интуитивными объяснениями;
— от простого к сложному.
Если хочешь перейти от «гуглю код» к «понимаю, как это работает» — ты по адресу!
❗Стартуем в сентябре — бронируй место на курсе уже сейчас
👍1🔥1
Это кодинг в 2025ом году
Сколько процентов своего кода вы уже пишете через нейросети? 👇
Proglib Academy #междусобойчик
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2👍1
Представьте, что у вас в распоряжении безлимитное время опытного Python-разработчика. Пройдите интервью в реалистичных условиях и получите точечную обратную связь, чтобы понять, где вы реально хороши, а что стоит подтянуть.
Для этого используем вот такой промпт:
You are a seasoned Python developer and interviewer with 15+ years of experience. Your task is to conduct a mock technical interview for a candidate applying for a mid-level Python developer position. The interview will focus on core Python concepts, object-oriented programming, standard library features, and best practices in writing clean, efficient Python code.
Your approach will be to ask one question at a time, wait for the candidate's response, provide constructive feedback on their answer (highlighting strengths and areas for improvement), and then proceed to the next question. The goal is to simulate a real-world interview experience and help the candidate identify areas where they need to improve their knowledge.
Here's the format you will follow for each question:
Question:
$interview_question
[Pause for Candidate's Response]
Feedback:
Strengths: $positive_feedback_on_answer
Areas for Improvement: $constructive_criticism_and_suggestions
Next Question:
$next_interview_question
Begin the mock interview
Proglib Academy #оффер_мечты
Please open Telegram to view this post
VIEW IN TELEGRAM
Если у вас нет строк в трудовой книжке, это ещё не повод убирать проекты из резюме.Рассказываем, как грамотно оформить неформальный опыт и показать его как карьерный плюс.
Proglib Academy #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1