Cloud 完美流程运行:如何将运行日志发送到完美服务器?

Cloud 完美流程运行:如何将运行日志发送到完美服务器?,cloud,flow,orchestration,prefect,Cloud,Flow,Orchestration,Prefect,我目前正试图在我的本地机器上运行一些fifter流(然后在一些googlecloudruns实例中),我想将运行日志发送到远程的fifter服务器 下面是示例代码: @task def my_task(): logger = prefect.context.get("logger") logger.info("An info message.") logger.warning("A warning message.&qu

我目前正试图在我的本地机器上运行一些fifter流(然后在一些googlecloudruns实例中),我想将运行日志发送到远程的fifter服务器

下面是示例代码:

@task
def my_task():
    logger = prefect.context.get("logger")

    logger.info("An info message.")
    logger.warning("A warning message.")

@task(log_stdout=True)
def say_hello(name):
    print("Hello, {}!".format(name))

with Flow(name="My First Flow") as flow:

    my_task()
    say_hello(Parameter('msg'))

flow.run(msg='You')
另外,我在backend.toml中添加了一些配置:

backend = "server"

[server]
host = "SERVER_PUBLIC_IP"
port = "4200"
host_port = "4200"
endpoint = "${server.host}:${server.port}"

[server.graphql]
host = "SERVER_PUBLIC_IP"

[server.ui]
host = "SERVER_PUBLIC_IP"
port = "8080"
host_port = "8080"
endpoint = "${server.ui.host}:${server.ui.port}"
graphql_url = "SERVER_PUBLIC_IP:4200/graphql"

[logging]
# The logging level: NOTSET, DEBUG, INFO, WARNING, ERROR, or CRITICAL
level = "INFO"

# The log format
format = "[%(asctime)s] %(levelname)s - %(name)s | %(message)s"

# additional log attributes to extract from context
# e.g., log_attributes = "['context_var']"
log_attributes = "[]"

# the timestamp format
datefmt = "%Y-%m-%d %H:%M:%S"

log_to_cloud = true
所以,我遇到了一个问题:

当我运行这段代码时,我有一个错误=>

  INTERNAL_SERVER_ERROR: Variable "$input" got invalid value null at
    "input.logs[0].flow_run_id"; Expected non-nullable type UUID! not to be null.

The GraphQL query was:

mutation($input: write_run_logs_input!) {
        write_run_logs(input: $input) {
            success
    }
}
因为我日志的第一行没有flow\u run\u id

例如: {“输入”:{“日志”:[{“流程运行id”:null,“任务运行id”:null,“时间戳”:“2020-12-22T21:24:13.628595+00:00”,“名称”:“完美的流程运行者”,“消息”:“为“我的第一个流程”开始流程运行”,级别为“信息”…

我想知道我忘记了什么或者我做错了什么:(


感谢您的帮助

完美生态系统中有两种跑步方式:

  • 交互式运行:这是您在此处尝试的运行类型;这是您在本地进程中生成的运行,负责管理/监视。交互式运行不知道如何与完善的API对话,也不尝试对话。这些运行主要用于本地测试

  • 托管运行:这些运行是Perfict API知道、跟踪和编排的—您只能通过Perfict API创建这些运行,可以通过注册流上的计划,也可以通过临时创建的运行(这是一个API调用)


您的代码试图将这两种情况混合在一起;您看到了这个错误,因为您创建的运行没有与后端通信的适当信息。我建议查看一些Perfect教程,可能从

开始在Perfect生态系统中有两种类型的运行:

  • 交互式运行:这是您在此处尝试的运行类型;这是您在本地进程中生成的运行,负责管理/监视。交互式运行不知道如何与完善的API对话,也不尝试对话。这些运行主要用于本地测试

  • 托管运行:这些运行是Perfict API知道、跟踪和编排的—您只能通过Perfict API创建这些运行,可以通过注册流上的计划,也可以通过临时创建的运行(这是一个API调用)


您的代码试图将这两种情况混合在一起;您看到了这个错误,因为您创建的运行没有与后端通信的适当信息。我建议查看一些Perfect教程,可能从

开始,感谢您的回答,但您正在链接,提供有关处理Perfect Cloud的步骤。我认为是这样的我的问题的解决方案是启动一个本地代理并在该代理上运行流。我正在处理它。该教程介绍了云或服务器的步骤,包括启动代理。任何标记为“云”的步骤如果您使用的是服务器,则可以跳过标识符。感谢您的回答,但您需要给出有关处理完美云的步骤。我认为我的问题的解决方案是启动本地代理并在该代理上运行流。我正在处理它。该教程涵盖了云或服务器的步骤,包括启动代理。任何步骤如果您使用的是服务器,则可以跳过带有“Cloud”标识符的数据。