Live data from Hacker News

Temporal Python – A durable, distributed asyncio event loop (2023)

temporal.io

21–30 of 56 posts

Re: Temporal Python – A durable, distributed asyncio event loop (2023)

#21
post #20

Is this equal to Azure Durable Functions?

Not necessarily "equal" but the basic premise is the same, yes, and there is a common lineage. Azure Durable Functions sits on Azure Durable Task Framework which was created by the co-founder of Temporal (https://temporal.io/about).

(disclaimer, I'm the author of the post)

Re: Temporal Python – A durable, distributed asyncio event loop (2023)

#22
post #20

Is this equal to Azure Durable Functions?

Not necessarily "equal" but the basic premise is the same, yes, and there is a common lineage. Azure Durable Functions sits on Azure Durable Task Framework which was created by the co-founder of Temporal ( https://temporal.io/about ). (disclaimer, I'm the author of the post)

Ohh, that's great to hear! I do like ADF, but the Python worker is full of bugs and weird behaviour and tickets stay open for month without progress. I will definitely check that out!

Re: Temporal Python – A durable, distributed asyncio event loop (2023)

#23
post #22

Earlier quoted context omitted.

Not necessarily "equal" but the basic premise is the same, yes, and there is a common lineage. Azure Durable Functions sits on Azure Durable Task Framework which was created by the co-founder of Temporal ( https://temporal.io/about ). (disclaimer, I'm the author of the post)

Ohh, that's great to hear! I do like ADF, but the Python worker is full of bugs and weird behaviour and tickets stay open for month without progress. I will definitely check that out!

During an evaluation I found a bug in their library. I went to their Slack, posted about it, and they gave a workaround in 15 minutes, created an issue in 30, and had a bugfix PR ready the next day. Pretty impressed with their team.

Excited to get to use it at some point.

Re: Temporal Python – A durable, distributed asyncio event loop (2023)

#24
Read the example code, have a sinking feeling that is not taken from a real tested example. Either there are multiple unexplained symbols or teh code does not actually run.

For example, in "Implementing a Workflow" the execute_activity refers to Purchaser.purchase, which is not declared anywhere.

If the execute_activity times-out after 1 minutes, the status does not seem to be updated anywhere.

In "Running a Worker", do_purchaser is passed as an activity, without explanation. (I guess I'd need to read the fundamental Temporal docs?)

Re: Temporal Python – A durable, distributed asyncio event loop (2023)

#25

Read the example code, have a sinking feeling that is not taken from a real tested example. Either there are multiple unexplained symbols or teh code does not actually run. For example, in "Implementing a Workflow" the execute_activity refers to Purchaser.purchase, which is not declared anywhere. If the execute_activity times-out after 1 minutes, the status does not seem to be updated anywhere. In "Running a Worker",…

Yes, it has undergone revisions since which caused function name mismatch (EDIT: fixed). The execute_activity there uses start_to_close_timeout which is per attempt and will retry forever by default (customizable).

This is more of a primer on the Python part of Temporal rather than an explanation of all Temporal concepts in depth. Definitely would recommend reading the fundamental docs at https://docs.temporal.io/encyclopedia/. For more exact samples, see https://github.com/temporalio/samples-python.

Re: Temporal Python – A durable, distributed asyncio event loop (2023)

#27

I can’t understand what layer provides the state orchestration. Like, in celery is redis. What about here?

The Temporal server stores events and distributes tasks. There is a cloud offering or it can be self-hosted (with support for Cassandra, Postgres, MySQL, and SQLite persistence). This post focuses more on the Temporal Python SDK and not the general platform.

Re: Temporal Python – A durable, distributed asyncio event loop (2023)

#28
post #15

Anyone migrated from celery, with / without regrets?

Many Temporal users used Celery in the past. There was a popular blog post a while back about issues with celery: https://steve.dignam.xyz/2023/05/20/many-problems-with-celer... . Here's a brief heading-by-heading listing of how Temporal addresses those issues: https://community.temporal.io/t/suggestion-for-blog-post-abo... . (disclaimer, I'm the author of the post)

The "API isn’t Pythonic" examples are misleading, the first and third are using more verbose forms of:

  add.delay(1, 2)
The verbose forms are for when you want extra functionality like in the second example.

It's relatively small compared to the other issues but it sticks out because it's one of only two listed as "you'll have to live with it".

Re: Temporal Python – A durable, distributed asyncio event loop (2023)

#29
post #28

Earlier quoted context omitted.

Many Temporal users used Celery in the past. There was a popular blog post a while back about issues with celery: https://steve.dignam.xyz/2023/05/20/many-problems-with-celer... . Here's a brief heading-by-heading listing of how Temporal addresses those issues: https://community.temporal.io/t/suggestion-for-blog-post-abo... . (disclaimer, I'm the author of the post)

The "API isn’t Pythonic" examples are misleading, the first and third are using more verbose forms of: add.delay(1, 2) The verbose forms are for when you want extra functionality like in the second example. It's relatively small compared to the other issues but it sticks out because it's one of only two listed as "you'll have to live with it".

(to clarify my ambiguous disclaimer, I am the author of OP's Temporal post, not the Celery one)

Re: Temporal Python – A durable, distributed asyncio event loop (2023)

#30

I can’t understand what layer provides the state orchestration. Like, in celery is redis. What about here?

The Temporal server stores events and distributes tasks. There is a cloud offering or it can be self-hosted (with support for Cassandra, Postgres, MySQL, and SQLite persistence). This post focuses more on the Temporal Python SDK and not the general platform.

Could you or anyone else with experience with Temporal share how hard it is to self-host in practice? Like, is this more like Redis (self-hosting is trivial) or Supabase (nominally self-hostable, but if you try to do it you'll quickly realize it's a pain and the happy path is to use their hosted platform).
Post reply on HN