feat: 新增技能扩展N16一章相关示例源码
This commit is contained in:
15
code/newsletter/N16/01_quickstart.py
Normal file
15
code/newsletter/N16/01_quickstart.py
Normal file
@@ -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()
|
||||||
25
code/newsletter/N16/02_session.py
Normal file
25
code/newsletter/N16/02_session.py
Normal file
@@ -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()
|
||||||
20
code/newsletter/N16/03_pipelining.py
Normal file
20
code/newsletter/N16/03_pipelining.py
Normal file
@@ -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()
|
||||||
21
code/newsletter/N16/04_configuration.py
Normal file
21
code/newsletter/N16/04_configuration.py
Normal file
@@ -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,
|
||||||
|
},
|
||||||
|
)
|
||||||
43
code/newsletter/N16/05_grouper.py
Normal file
43
code/newsletter/N16/05_grouper.py
Normal file
@@ -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()
|
||||||
Reference in New Issue
Block a user