Daniel
10/24/2022, 7:40 PMTypeError: Cannot read properties of null (reading 'parentNode')
at parentNode (index.dae84138.js:4:48177)
at <http://qw.se|qw.se> [as fn] (index.dae84138.js:4:33506)
at qw.run (index.dae84138.js:1:5367)
at U.E.update (index.dae84138.js:4:34233)
at go (index.dae84138.js:4:664)
at fM (index.dae84138.js:4:2296)
Finally, I am running my python scripts and have prefect==2.6.4 pip installed via a conda environment on my vm.Ryan Peden
10/24/2022, 11:54 PMprefect config set PREFECT_ORION_UI_API_URL=<http://your-vm-IP/api>
• or, set the PREFECT_ORION_UI_API_URL
to ``http://your-vm-IP/api` .
If you're not running Orion on port 80, you'll need to add the port after the IP as well. Setting that should ensure the UI knows where to find the UI. By default it looks for the same address the server is started on.Bebeto Nyamwamu
10/25/2022, 10:30 AMDaniel
10/25/2022, 11:43 AMBebeto Nyamwamu
10/25/2022, 11:45 AMDaniel
10/25/2022, 12:15 PMBebeto Nyamwamu
10/25/2022, 12:17 PMRyan Peden
10/25/2022, 12:20 PMBebeto Nyamwamu
10/25/2022, 12:22 PMRyan Peden
10/25/2022, 12:29 PMBebeto Nyamwamu
10/25/2022, 1:36 PMRyan Peden
10/25/2022, 1:43 PMPREFECT_ORION_UI_API_URL
environment variable on the GCP server where Prefect is running, and the IP address or hostname in it matches the address on which you are accessing Prefect in your browser?Bebeto Nyamwamu
10/25/2022, 1:49 PMRyan Peden
10/25/2022, 2:00 PM<http://gcp-public-ip:4200/api>
in your browser, do you see anything? There's nothing at that route, so it should return the following JSON: {"detail":"Not Found"}
. I just want to make sure the browser is able to load API routes like it should.Bebeto Nyamwamu
10/25/2022, 2:17 PMRyan Peden
10/25/2022, 3:17 PMBebeto Nyamwamu
10/25/2022, 3:35 PMRyan Peden
10/25/2022, 4:50 PMresult_storage
parameter in the flow decorator. This stores your flow and task results remotely instead of on the filesystem at PREFECT_LOCAL_STORAGE_PATH. For example:
# assumes you have a writable storage block (S3, Azure blob, etc.)
# named 'my-remote-storage'
@flow(result_storage="my-flow-storage")
def my_flow(message):
print(message)
return "This will get saved in my-storage-block"
If you've already loaded a storage block, you can also use it directly instead of using its name:
storage_block = S3.load("my-flow-storage")
@flow(result_storage=storage_block)
def my_flow(message):
print(message)
return "This will get saved in my-storage-block."
By default, subflows and tasks will use their parent flow's result storage but if you need to, you can specify different storage for them. For example:
@task(result_storage="my-task-storage")
def my_task(message):
print(f"Task message: {message}")
return "This will always get saved in my-task-storage-block."
@task
def my_other_task(message):
print(f"Task message: {message}")
# inherits result_storage from the flow that called the task
# because we didn't provide one
return """
This will get saved in my-subflow-storage or my-flow-storage,
depending on which flow calls it.
"""
@flow(result_storage="my-subflow-storage")
def my_subflow(message):
print(f"Subflow message: {message}")
my_task(message) # results stored in my-flow-storage
return "This will get saved in my-subflow-storage."
@flow(result_storage="my-flow-storage")
def my_flow(message):
print(message)
my_subflow(message) # results stored in my-subflow-storage
my_task(message) # results stored in my-task-storage
my_other_task(message) # results stored in my-flow-storage
return "This will get saved in my-storage-block."