[英]Prefect Task Scheduling
我是 Prefect 的新手,主要使用 Airflow 工作。 我整理了一個工作流程,執行得很好,但任務沒有按我期望的順序執行。 流在這里:
with Flow(name='4chan_extract') as flow:
board_param = Parameter(name='board_name', required = True, default='pol')
getData(board= board_param)
checkDB(url= 'postgresql://postgres:user@localhost:5434/postgres')
upload_raw(url="postgresql://postgres:user@localhost:5434/postgres",
board=board_param)
remove_dupes(board=board_param)
但是,當我使用flow.visualise()
這個流時,DAG 看起來真的很奇怪。
我的理解是with
集合順序的上下文運算符? 在每個任務中使用up_stream
沒有幫助。
任何幫助表示贊賞。
如果您希望您的任務一個接一個地被順序調用,您可以將upstream_tasks
添加到您的每個任務中。 此外,為了輕松傳遞 state 依賴項,您可以在調用任務時為其分配一個名稱( data = get_data(board=board_param)
),這允許將此命名引用傳遞給下游依賴項。
我只能猜測您希望此流程看起來如何,但假設您希望它按順序運行,這里有一個完整的示例和 DAG 可視化:
from prefect import task, Flow, Parameter
@task
def get_data(board):
pass
@task
def check_db(url):
pass
@task
def upload_raw(url, board):
pass
@task
def remove_duplicates(board):
pass
with Flow(name="4chan_extract") as flow:
board_param = Parameter(name="board_name", required=True, default="pol")
data = get_data(board=board_param)
check = check_db(
url="postgresql://postgres:user@localhost:5434/postgres", upstream_tasks=[data]
)
upload = upload_raw(
url="postgresql://postgres:user@localhost:5434/postgres",
board=board_param,
upstream_tasks=[check],
)
remove_duplicates(board=board_param, upstream_tasks=[upload])
if __name__ == "__main__":
flow.visualize()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.