簡體   English   中英

如何在 Prefect 服務器上遠程部署流程?

[英]How to deploy flow remotly on Prefect server?

我開始使用 Prefect Orchestration 工具。 我的目標是建立一個服務器來管理我在不同的其他 PC 和服務器上的自動化。 我還沒有完全理解 Prefect 的架構(使用所有這些代理等),但我設法在遠程 Ubuntu 環境中啟動了一個服務器。 為了遠程訪問 UI,我創建了一個 config.toml 並添加了以下幾行:

[server]
endpoint = "<IPofserver>:4200/graphql"
    [server.ui]
        apollo_url = "http://<IPofserver>:4200/graphql"
[telemetry]
    [server.telemetry]
        enabled = false

遙測部分只是禁用向 Prefect 發送分析數據。 之后可以從另一台 PC 訪問 UI,也可以在另一台 PC 上啟動代理:

prefect agent local start --api "http://<IPofserver>:4200/graphql"

但是我現在如何部署流? A 找不到為代理設置其 api 的選項。 即使我嘗試在服務器本身正在運行的機器上注冊流,我也會收到以下錯誤消息:

回溯(最近一次調用最后):文件“”,第 1 行,在文件“/usr/local/lib/python3.10/dist-packages/prefect/core/flow.py”,第 1726 行,在寄存器中注冊_flow = client .register( File "/usr/local/lib/python3.10/dist-packages/prefect/client/client.py", line 831, in register project = self.graphql(query_project).data.project # type: ignore文件“/usr/local/lib/python3.10/dist-packages/prefect/client/client.py”,第 443 行,在 graphql 結果 = self.post(文件“/usr/local/lib/python3.10/ dist-packages/prefect/client/client.py”,第 398 行,在響應后 = self._request(文件“/usr/local/lib/python3.10/dist-packages/prefect/client/client.py”,第 633 行,在 _request 響應 = self._send_request(文件“/usr/local/lib/python3.10/dist-packages/prefect/client/client.py”,第 497 行,在 _send_request 響應 = session.post(文件“ /usr/local/lib/python3.10/dist-packages/requests/sessions.py",第 635 行,在后返回 self.request("POST", url, data=data, json=json, **kwargs)文件“/usr/local/lib/py thon3.10/dist-packages/requests/sessions.py”,第 587 行,在請求 resp = self.send(prep, **send_kwargs) 文件“/usr/local/lib/python3.10/dist-packages/requests /sessions.py”,第 695 行,發送適配器 = self.get_adapter(url=request.url) 文件“/usr/local/lib/python3.10/dist-packages/requests/sessions.py”,第 792 行,在 get_adapter raise InvalidSchema(f"No connection adapters were found for {url!r}") requests.exceptions.InvalidSchema: No connection adapters were found for ':4200/graphql'

使用的示例代碼:

import prefect
from prefect import task, Flow

@task
def say_hello():
    logger = prefect.context.get("logger")
    logger.info("Hello, Cloud!")

with Flow("hello-flow") as flow:
    say_hello()

# Register the flow under the "tutorial" project
flow.register(project_name="Test")

如果您開始使用 Prefect,我建議您使用 Prefect 2.0 - 請查看此文檔頁面入門此文檔關於底層架構

如果您仍然需要 Prefect Server 和 Prefect 1.0 方面的幫助,請查看此詳盡的故障排除指南,如果沒有幫助,請在 Slack 上給我們發送消息,我們會盡力幫助您。

暫無
暫無

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

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