temporalio / temporalio/sdk-python
[Feature Request] Improve wait_condition semantics
Nessuno ha ancora preso questa issue.
- Lingua principale
- Python
- Stelle
- 1.2k
- Fork
- 241
- Merge medio
- 3g 21h
- PR unite (30g)
- 55
Descrizione
Ideally, the following would not happen:
@workflow.defn
class WaitForSharedMutableStateWorkflow:
def __init__(self) -> None:
self.cond = False
@workflow.run
async def run(self):
self.cond = True
await asyncio.gather(self.coro("1"), self.coro("2"))
async def coro(self, id: str):
await workflow.wait_condition(lambda: self.cond)
print(f"after wait coro {id} sees {self.cond}") # ❗❗ <== coro2 sees False❗
self.cond = False
await asyncio.sleep(1)
self.cond = True
Completely eliminating the possibility would be ideal, but best-effort improvements would also be welcome.
Guida per i contributori
Apri la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Direzione di ricerca
Inizia riproducendo l’esempio workflow.wait_condition con asyncio.gather e le due chiamate a coro mostrate nell’issue, quindi esamina come wait_condition riprende i workflow concorrenti. Definisci e documenta il comportamento previsto per lo stato mutabile condiviso; il lavoro è concluso quando viene eliminato il caso dimostrato in cui coro2 vede False, oppure viene coperto un comportamento best-effort chiaramente specificato.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Valutazione
- Stack tecnologico
- python
- Ambito
- distributed-systems
- Tipo di issue
- Funzionalità
- Difficoltà
- 5/5
- Tempo stimato
- Più di una settimana
- Stato di attività
- Ferma
- Chiarezza
- Abbastanza chiara
- Idoneità per principianti
- 35/100