diff --git a/code/newsletter/N16/01_quickstart.py b/code/newsletter/N16/01_quickstart.py new file mode 100644 index 0000000..fbd17ab --- /dev/null +++ b/code/newsletter/N16/01_quickstart.py @@ -0,0 +1,15 @@ +from rocketry import Rocketry + +app = Rocketry(execution="main") +times = 0 + + +@app.task('every 1 second') +def echo(): + global times + times += 1 + print(f"Running {times} times...") + + +if __name__ == '__main__': + app.run() diff --git a/code/newsletter/N16/02_session.py b/code/newsletter/N16/02_session.py new file mode 100644 index 0000000..a70be7a --- /dev/null +++ b/code/newsletter/N16/02_session.py @@ -0,0 +1,25 @@ +from rocketry import Rocketry + +app = Rocketry() + + +def get_params(): + yield {"name": "100gle"} + yield {} + + +@app.task() +def greet(name=None): + msg = name or "world" + print(f"Hello, {msg}!") + + +@app.task('every 3 second', execution="thread") +def do_callback(): + for params in get_params(): + task = app.session["greet"] + task.run(**params) + + +if __name__ == '__main__': + app.run() diff --git a/code/newsletter/N16/03_pipelining.py b/code/newsletter/N16/03_pipelining.py new file mode 100644 index 0000000..53fa7d1 --- /dev/null +++ b/code/newsletter/N16/03_pipelining.py @@ -0,0 +1,20 @@ +from rocketry import Rocketry +from rocketry.args import Return +from rocketry.conds import after_success + +app = Rocketry(execution="async") + + +@app.task('every 3 second') +def success(): + return True + + +@app.task(after_success(success)) +def handle(is_success=Return(success)): + status = "Done" if is_success else "Running" + print(f"Task status is: {status}") + + +if __name__ == '__main__': + app.run() diff --git a/code/newsletter/N16/04_configuration.py b/code/newsletter/N16/04_configuration.py new file mode 100644 index 0000000..448b24c --- /dev/null +++ b/code/newsletter/N16/04_configuration.py @@ -0,0 +1,21 @@ +from redbird.repos import CSVFileRepo +from rocketry import Rocketry +from rocketry.log import LogRecord + +app = Rocketry( + execution="async", + logger_repo=CSVFileRepo( + filename="task_log.csv", + model=LogRecord, + ), + config={ + 'task_pre_exist': 'raise', + 'force_status_from_logs': True, + 'silence_task_prerun': False, + 'silence_task_logging': False, + 'silence_cond_check': False, + 'max_process_count': 5, + 'restarting': 'replace', + 'cycle_sleep': 0.1, + }, +) diff --git a/code/newsletter/N16/05_grouper.py b/code/newsletter/N16/05_grouper.py new file mode 100644 index 0000000..16cb657 --- /dev/null +++ b/code/newsletter/N16/05_grouper.py @@ -0,0 +1,43 @@ +from rocketry import Grouper, Rocketry +from rocketry.args import Arg + +app = Rocketry() + +# ----------- +# Daily Tasks +# ----------- +daily_group = Grouper() + + +@daily_group.param("daily_signal") +def signal(): + return "Bang!" + + +@daily_group.task("daily") +def postit(signal=Arg("daily_signal")): + ... + + +# ------------ +# Weekly Tasks +# ------------ + +weekly_group = Grouper() + + +@weekly_group.param("weekly_signal") +def signal(): + return "weekly" + + +@weekly_group.task("weekly") +def backup(signal=Arg("weekly_signal")): + ... + + +app.include_grouper(daily_group) +app.include_grouper(weekly_group) + +if __name__ == '__main__': + app.run()