簡體   English   中英

使用 with 和 object Flow() 為 python 創建完美流時出錯

[英]Error to create a flow in prefect for python using with and object Flow()

大家好,我正在嘗試使用 python 的 prefect 創建一個流程,但我收到錯誤TypeError: 'fn' must be callable ,我已經安裝了所有的包,我已經嘗試過不同的 IDE 像 vs code 和 colab 但結果是相同的。

代碼是:

from prefect import task, Flow


@task()
def load():
    print("Loading data")

with Flow("Hello-world") as flow:
    load()

flow.run() 


#ERROR
TypeError: 'fn' must be callable

我嘗試將代碼更改為此,但我得到一個不同的錯誤:

from prefect import task, Flow


@task()
def load():
    print("Loading data")

with Flow(name = "Hello-world") as flow:
    load()

flow.run() 

#ERROR
TypeError: Flow.__init__() missing 1 required positional argument: 'fn'

我相信您正在嘗試使用 Prefect 2.0 package 運行 Prefect 1.0 流程。

我能夠使用prefect==1.2.4很好地運行您的示例,並且能夠使用prefect==2.0.0重現您的錯誤

這是您的示例使用prefect>=2.0.0的樣子:

from prefect import flow, task

@task
def load():
   print("Loading data")

@flow(name="Hello-world")
def my_flow():
   load()

if __name__ == "__main__":
   my_flow()

以下是一些關於運行 prefect 2.0 流程的文檔

在 Prefect 2.0 或major 中,我們需要在下一個示例中創建一個流程:

import pandas as pd
import numpy as np

from prefect import flow, task, Flow

@task
def extract():
    pass

@task
def transform():
    pass

@task
def load():
    pass

"""
with Flow("ETL Test") as flow:
    extract()
    transform()
    load()

flow.run()
"""

@flow
def flow_caso():
    extract()
    transform()
    load()

flow_caso()

在評論中,您可以看到我們如何在 Prefect 中創建版本次要為 2.0.0 的流,但在主要版本中,您需要使用裝飾器 @flow 創建 function。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM