Ray Workflows与高级数据处理:功能、应用与实践
1. Ray Workflows基础
Ray Workflows为Ray增添了工作流原语,能够创建具有丰富工作流管理支持的动态管道。以下是一个预订旅行的工作流示例:
@workflow.step
def finalize_or_cancel(
flights: List[Flight],
hotels: List[Hotel]) -> Receipt: ...
@workflow.step
def book_trip(origin: str, dest: str, dates) -> "Workflow[Receipt]":
# 注意,工作流引擎在父步骤返回之前不会开始执行子工作流
# 这避免了步骤重叠并确保可恢复性
f1: Workflow = book_flight.step(origin, dest, dates[0])
f2: Workflow = book_flight.step(dest, origin, dates[1])
hotel: Workflow = book_hotel.step(dest, dates)
return finalize_or_cancel.step([f1, f2], [hotel])
fut = book_trip.step("OAK", "SAN", ["6/12", "7/5"])
fut.run() # 返回Receipt(...)
这个示例展示了如何通过工作流步骤组合来实现一个复杂的预订流程,工作流引擎会确保步