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