英文:
How to use return value (str) of one activity as input a second activity in temporal python sdk?
问题
我要翻译的部分:
"I'm using the python sdk for https://temporal.io/.
I have a workflow that i'd like to execute two sequential activities.
- Do X and return a filepath.
- Do Y with data at that filepath.
How do i get path_from_previous_activity from the first activity?!!"
英文:
I'm using the python sdk for https://temporal.io/.
I have a workflow that i'd like to execute two sequential activities.
- Do X and return a filepath.
- Do Y with data at that filepath.
@workflow.defn
class ScraperWorkflow:
@workflow.run
async def run(self, scraper_input: ScraperInput):
scraper_result = await workflow.execute_activity(
ercot_scraper, # activity that takes scraper_input and returns a path
scraper_input,
)
extractor_result = await workflow.execute_activity(
extract_activity,
path_from_previous_activity,
)
return
How do i get path_from_previous_activity from the first activity?!!
答案1
得分: 2
你的请求是:
"What do you mean with "path_from_previous_activity"?
You can pass the results of your fist activity as input to the second one. so can pass scraper_result as input to your extract_activity."
以下是翻译好的部分:
你的问题是:
"你是什么意思的 "path_from_previous_activity"?
你可以将第一个活动的结果作为输入传递给第二个活动。所以可以将 scraper_result 作为输入传递给你的 extract_activity。"
英文:
What do you mean with "path_from_previous_activity"?
You can pass the results of your fist activity as input to the second one. so can pass scraper_result as input to your extract_activity.
答案2
得分: 1
If I’m understanding your question correctly it seems like you want both activities to run on the same machine. That doesn’t happen by default with Temporal, each activity attempt may run on a different host. You can leverage the sticky activity pattern to ensure activities run on the same host.
如果我理解你的问题正确,似乎你想让两个活动在同一台机器上运行。这在 Temporal 中不是默认行为,每个活动尝试可能会在不同的主机上运行。你可以利用粘性活动模式来确保活动在同一主机上运行。
If you want to return a FilePath object, I believe that’s not serializable by default, there are different ways to handle this, the easiest of them being passing paths as strings. I recommend returning a dataclass from the activity that contains both the result and the path so you can extend it if need be in a backwards compatible manner.
如果你想返回一个 FilePath 对象,我认为默认情况下它是不可序列化的,处理它有不同的方法,其中最简单的方法是将路径作为字符串传递。我建议从活动中返回一个数据类,其中包含结果和路径,这样你可以以向后兼容的方式扩展它。
英文:
If I’m understanding your question correctly it seems like you want both activities to run on the same machine.
That doesn’t happen by default with Temporal, each activity attempt may run on a different host.
You can leverage the sticky activity pattern to ensure activities run on the same host.
If you want to return a FilePath object, I believe that’s not serializable by default, there are different ways to handle this, the easiest of them being passing paths as strings.
I recommend returning a dataclass from the activity that contains both the result and the path so you can extend it if need be in a backwards compatible manner.
https://github.com/temporalio/samples-python/tree/main/activity_sticky_queues
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论