In meinem Handler async
möchte ich warten, bis sich der Status der Aufgabe geändert hat. Im Moment überprüfe ich einfach den Zustand in einer Endlosschleife und warte. Hier ist ein Beispiel, die wait_until_done
Funktion:So warten Sie, bis das Objekt den Status ändert
import asyncio
class LongTask:
state = 'PENDING'
my_task = LongTask()
def done():
my_task.state = 'DONE'
async def wait_until_done():
while True:
if my_task.state == 'PENDING':
await asyncio.sleep(2)
else:
break
print("Finally, the task is done")
def main(loop, *args, **kwargs):
asyncio.ensure_future(wait_until_done())
loop.call_later(delay=5, callback=done)
loop = asyncio.get_event_loop()
main(loop)
loop.run_forever()
Gibt es eine bessere Art und Weise, dass zu tun?
Observer-Muster ist wahrscheinlich das, was Sie verwenden möchten. Machen Sie das Objekt "beobachtbar". Dann registrieren Sie einen Handler als Beobachter für Ihr Objekt. Wenn sich der Status ändert, wird er die Methode aufrufen, die Sie wollen. https://stackoverflow.com/questions/1904351/python-observer-pattern-examples- tips – Rob