feat: use flush in atexit to not block results

This commit is contained in:
Greyson LaLonde
2026-01-20 02:56:55 -05:00
parent 74b9a7d9ab
commit 9a27fbb36b
9 changed files with 68 additions and 59 deletions

View File

@@ -732,7 +732,6 @@ class Crew(FlowTrackable, BaseModel):
) )
raise raise
finally: finally:
crewai_event_bus.flush()
detach(token) detach(token)
def kickoff_for_each( def kickoff_for_each(
@@ -881,7 +880,6 @@ class Crew(FlowTrackable, BaseModel):
) )
raise raise
finally: finally:
await asyncio.to_thread(crewai_event_bus.flush)
detach(token) detach(token)
async def akickoff_for_each( async def akickoff_for_each(

View File

@@ -556,6 +556,9 @@ class CrewAIEventsBus:
wait: If True, wait for all pending tasks to complete before stopping. wait: If True, wait for all pending tasks to complete before stopping.
If False, cancel all pending tasks immediately. If False, cancel all pending tasks immediately.
""" """
if wait:
self.flush()
with self._rwlock.w_locked(): with self._rwlock.w_locked():
self._shutting_down = True self._shutting_down = True
loop = getattr(self, "_loop", None) loop = getattr(self, "_loop", None)

View File

@@ -1448,7 +1448,6 @@ class Flow(Generic[T], metaclass=FlowMeta):
return final_output return final_output
finally: finally:
await asyncio.to_thread(crewai_event_bus.flush)
detach(flow_token) detach(flow_token)
async def akickoff( async def akickoff(

View File

@@ -50,14 +50,14 @@ interactions:
response: response:
body: body:
string: !!binary | string: !!binary |
H4sIAAAAAAAAAwAAAP//jFJdT9wwEHzPr1j5+YISyBHIGxSBSh+Q+qGq16LI2JvErWMbewOt0P33 H4sIAAAAAAAAAwAAAP//jFLBbtswDL37Kwid4yJOnTr1regwrMN2C7DDVhisTNtaZUmQ6GZFkX8f
yslxCS2V+hIpOzvjmd19SgCYkqwCJjpOonc6vciyL809bdafPpy/e3N9XV5Jer85uzkPny82bBUZ ZKexu3XALgbMx/f0HsmXBECoWpQgZIcse6fTD+t12B1QfpN+n/Ht/stjc2icvvsaPj1/FqvIsA8/
9u47CnpmHQjbO42krJlg4ZETRtW8PD45OS3WeTkCvZWoI611lBYHedoro9LD7HCdZkWaFzt6Z5XA SfIr60La3mliZc0ES0/IFFWz4mq3u94Wm3wEeluTjrTWcZpfZGmvjEo36802Xedplp/onVWSgijh
wCr4mgAAPI3faNRI/MkqyFbPlR5D4C2yat8EwLzVscJ4CCoQN8RWMyisITSj94+dHdqOKngLxj6C ewIA8DJ+o1FT0y9Rwnr1WukpBGxJlOcmAOGtjhWBIajAaFisZlBaw2RG7/vODm3HJdyBsQeQaKBV
4AZa9YDAoY0BgJvwiP6buVSGazgb/yqQ1uBS0GMzBB5TmUHrBcCNscTjVMYotztkuzevbeu8vQt/ TwQIbQwAaMKB/A/zURnUcDP+lVBbQ0tBT80QMKYyg9YLAI2xjHEqY5T7E3I8m9e2dd4+hD+oolFG
UFmjjApd7ZEHa6LRQNaxEd0mALfjkIYXuZnztndUk/2B43P5+nTSY/NyFmixA8kS14t6ebR6Ra+W ha7yhMGaaDSwdWJEjwnA/Tik4U1u4bztHVdsH2l8LtteT3piXs4CzU8gW0a9qBeXq3f0qpoYlQ6L
SFzpsBgzE1x0KGfqvBM+SGUXQLJI/beb17Sn5Mq0/yM/A0KgI5S18yiVeJl4bvMYb/dfbfspj4ZZ MQuJsqN6ps47waFWdgEki9R/u3lPe0quTPs/8jMgJTmmunKeaiXfJp7bPMXb/VfbecqjYRHIPylJ
QP+gBNak0MdNSGz4oKeDYuFXIOzrRpkWvfNquqrG1UflMS+FwCZnyTb5DQAA//8DAJn9dBVkAwAA FSvycRM1NTjo6aBEeA5MfdUo05J3Xk1X1bjqsrjCQkpqMpEck98AAAD//wMAnStaOGQDAAA=
headers: headers:
CF-RAY: CF-RAY:
- CF-RAY-XXX - CF-RAY-XXX
@@ -66,7 +66,7 @@ interactions:
Content-Type: Content-Type:
- application/json - application/json
Date: Date:
- Tue, 20 Jan 2026 07:35:17 GMT - Tue, 20 Jan 2026 07:55:25 GMT
Server: Server:
- cloudflare - cloudflare
Set-Cookie: Set-Cookie:
@@ -86,13 +86,13 @@ interactions:
openai-organization: openai-organization:
- OPENAI-ORG-XXX - OPENAI-ORG-XXX
openai-processing-ms: openai-processing-ms:
- '520' - '601'
openai-project: openai-project:
- OPENAI-PROJECT-XXX - OPENAI-PROJECT-XXX
openai-version: openai-version:
- '2020-10-01' - '2020-10-01'
x-envoy-upstream-service-time: x-envoy-upstream-service-time:
- '538' - '628'
x-openai-proxy-wasm: x-openai-proxy-wasm:
- v0.1 - v0.1
x-ratelimit-limit-requests: x-ratelimit-limit-requests:

View File

@@ -50,14 +50,14 @@ interactions:
response: response:
body: body:
string: !!binary | string: !!binary |
H4sIAAAAAAAAAwAAAP//jFJda9wwEHz3r1j0fA524vvyWyAkFEKh0D6kbTCKtLaVyishyXdpw/33 H4sIAAAAAAAAAwAAAP//jFLBbtswDL37Kwid48JOk7rxLUAxdIdil24osBUGI9M2N1kSJLnpUOTf
IvtydtoE8mLwzs5oZnefEwCmJCuBiZYH0VmdXmXZXXOLq9vHP09y9/kb3a1uvn/ptq3dbzu2iAzz Bzlp7HYdsIsB8/E9vUfyJQEQXIsShOwwyN6q9CbL/Gb7sH/YfZUFP+Pdt1u/VTdfbu8afS8WkWF2
8IgivLDOhOmsxqAMjbBwyANG1Xy92my2xTLfDEBnJOpIa2xIi7M87RSp9Dw7X6ZZkebFkd4aJdCz P0mGV9aFNL1VFNjoIywdYaComhdX19ebdbFcj0BvalKR1tqQri7ytGfN6TJbrtNslearE70zLMmL
En4kAADPwzcaJYlPrIRs8VLp0HveICtPTQDMGR0rjHuvfOAU2GIChaGANHj/2pq+aUMJn4DMHgQn Er4nAAAv4zca1TU9ixKyxWulJ++xJVGemwCEMypWBHrPPqAOYjGB0uhAevR+35mh7UIJn0GbPUjU
aNQOgUMTAwAnv0f3k64VcQ2Xw18JrZrLOax7z2Mm6rWeAZzIBB5nMgS5PyKHk3VtGuvMg/+HympF 0PITAUIbAwBqvyf3Q39ijQq2418JHc/lHDWDx5hJD0rNANTaBIwzGYM8npDD2boyrXVm599RRcOa
yreVQ+4NRZs+GMsG9JAA3A8j6l+lZtaZzoYqmF84PJcvt6Mem1YzQ4sjGEzgelZfXyze0KskBq60 fVc5Qm90tOmDsWJEDwnA4zii4U1qYZ3pbaiC+UXjc/l6c9QT02pm6OoEBhNQzerF5eIDvaqmgKz8
nw2ZCS5alBN12gjvpTIzIJml/t/NW9pjckXNR+QnQAi0AWVlHUolXiee2hzGy32v7TTlwTDz6HZK bMhCouyonqjTRnCo2cyAZJb6bzcfaR+Ts27/R34CpCQbqK6so5rl28RTm6N4uf9qO095NCw8uSeW
YBUUurgJiTXv9XhOzP/2AbuqVtSgs06NN1Xb6mK94mshsM5Zckj+AgAA//8DAJ/ajdRiAwAA VAUmFzdRU4ODOp6T8L99oL5qWLfkrOPjTTW2uiyusJCSmlwkh+QPAAAA//8DAASWsy5iAwAA
headers: headers:
CF-RAY: CF-RAY:
- CF-RAY-XXX - CF-RAY-XXX
@@ -66,7 +66,7 @@ interactions:
Content-Type: Content-Type:
- application/json - application/json
Date: Date:
- Tue, 20 Jan 2026 07:35:18 GMT - Tue, 20 Jan 2026 07:55:26 GMT
Server: Server:
- cloudflare - cloudflare
Set-Cookie: Set-Cookie:
@@ -86,13 +86,13 @@ interactions:
openai-organization: openai-organization:
- OPENAI-ORG-XXX - OPENAI-ORG-XXX
openai-processing-ms: openai-processing-ms:
- '420' - '369'
openai-project: openai-project:
- OPENAI-PROJECT-XXX - OPENAI-PROJECT-XXX
openai-version: openai-version:
- '2020-10-01' - '2020-10-01'
x-envoy-upstream-service-time: x-envoy-upstream-service-time:
- '448' - '391'
x-openai-proxy-wasm: x-openai-proxy-wasm:
- v0.1 - v0.1
x-ratelimit-limit-requests: x-ratelimit-limit-requests:

View File

@@ -50,14 +50,14 @@ interactions:
response: response:
body: body:
string: !!binary | string: !!binary |
H4sIAAAAAAAAAwAAAP//jFJNa9wwEL37Vww6r4O98X7Ut0La0h5KIb0sbTCKNJbVypLQyNkuYf97 H4sIAAAAAAAAAwAAAP//jFJda9wwEHz3r1j0fA72nT9SvxVC0mvfSimUNpiNvLbVypKQ5CRHuP9e
kXezdpoEejF43ryn92bmMQNgWrIamOh4FL03+U1R7NTtF72TH3b0jfo9qtV1rw63X2+Wn9giMdz9 ZF/OTpNAXwze2RnN7O5TBMBEwypgvEfPByPjqyRxN1efH2+w+DGkn/bF9a7Nv/f7/PA1+8I2gaHv
LxTxiXUlXO8NRu3sCRYBecSkWm7W2+27alVuR6B3Ek2iKR/z6qrMe211viyWq7yo8rI60zunBRKr fhP3z6wLrgcjyQutZphbQk9BNS2Ly8sPebnbTsCgG5KB1hkfZxdpPAgl4m2yzeMki9PsRO+14ORY
4UcGAPA4fpNRK/EPq6FYPFV6JOIKWX1pAmDBmVRhnEhT5DayxQQKZyPa0fv3zg2qizV8Buv2ILgF BT8jAICn6RuMqoYeWQXJ5rkykHPYEavOTQDMahkqDJ0TzqPybLOAXCtPavL+rddj1/sK9qD0A3BU
pR8QOKgUALilPYaf9qO23MD78a+GA9JcL2A7EE+h7GDMDODWusjTUMYkd2fkePFunPLB3dM/VNZq 0Il7AoQuBABU7oHsL3UtFEr4OP1VcCC31rPUjg5DKDVKuQJQKe0xDGVKcntCjmfvUnfG6jv3D5W1
q6lrAnJyNvmk6Dwb0WMGcDfOaHgWm/ngeh+b6H7j+Fy5Lk96bNrNDK3OYHSRm1l9s1q8otdIjFwb QgnX15bQaRV8Oq8Nm9BjBHA7zWh8EZsZqwfja6//0PRcWqSzHlt2s0KzE+i1R7mql/nmDb26IY9C
mk2ZCS46lBN1WgkfpHYzIJulfunmNe1Tcm3V/8hPgBDoI8rGB5RaPE88tQVMp/tW22XKo2FGGB60 utWUGUfeU7NQl5Xg2Ai9AqJV6tdu3tKekwvV/Y/8AnBOxlNTG0uN4C8TL22Wwum+13ae8mSYObL3
wCZqDGkTEls+mNM9MTpQxL5ptVUYfNCno2p9c71Z840Q2JYsO2Z/AQAA//8DALjcfKRjAwAA glPtBdmwiYZaHOV8T8wdnKehboXqyBor5qNqTb0rCyw5pzZl0TH6CwAA//8DAPUTEd9jAwAA
headers: headers:
CF-RAY: CF-RAY:
- CF-RAY-XXX - CF-RAY-XXX
@@ -66,7 +66,7 @@ interactions:
Content-Type: Content-Type:
- application/json - application/json
Date: Date:
- Tue, 20 Jan 2026 07:35:19 GMT - Tue, 20 Jan 2026 07:55:33 GMT
Server: Server:
- cloudflare - cloudflare
Set-Cookie: Set-Cookie:
@@ -86,13 +86,13 @@ interactions:
openai-organization: openai-organization:
- OPENAI-ORG-XXX - OPENAI-ORG-XXX
openai-processing-ms: openai-processing-ms:
- '586' - '418'
openai-project: openai-project:
- OPENAI-PROJECT-XXX - OPENAI-PROJECT-XXX
openai-version: openai-version:
- '2020-10-01' - '2020-10-01'
x-envoy-upstream-service-time: x-envoy-upstream-service-time:
- '606' - '434'
x-openai-proxy-wasm: x-openai-proxy-wasm:
- v0.1 - v0.1
x-ratelimit-limit-requests: x-ratelimit-limit-requests:

View File

@@ -50,14 +50,14 @@ interactions:
response: response:
body: body:
string: !!binary | string: !!binary |
H4sIAAAAAAAAAwAAAP//jFLLbtswELzrKxY8W4HkynKim4GgaA/toXAPfQQCTa0kNhSXIKm4ReB/ H4sIAAAAAAAAA4xSTW/bMAy9+1cQOsdFnOarvm0YtvWyU4EdtsJgZdrWJouCRKcrivz3QU4au1sH
L0g5lpKmQC4CtLMznNndxwSAyYZVwETPvRiMSm+z7Fu/3zm3/76mtt+VX+4/F/bTh/LrkQ5sFRh0 7GLAfHxP75F8zgCUqVUJSncouvc2/7Bcxk9PX776fs+fe2zu+PYgZLvu/VZu1CIx+OEHaXlhXWnu
+IXCP7GuBA1GoZekJ1hY5B6Dar4tr69vik1+E4GBGlSB1hmfFld5Okgt03W23qRZkebFmd6TFOhY vSUx7E6wDoRCSbXYbff7m83uejUCPddkE631kq+virw3zuSr5WqTL9d5sT7TOzaaoirhWwYA8Dx+
BT8SAIDH+A1GdYO/WQXZ6qkyoHO8Q1ZdmgCYJRUqjDsnnefas9UMCtIedfS+72nsel/BR9B0BME1 k1FX0y9VwnLxUukpRmxJlZcmABXYporCGE0UdKIWE6jZCbnR+13HQ9tJCbfg+BE0OmjNgQChTQEA
dPIBgUMXAgDX7oj2p34vNVewi38V9KgULRUttqPjIZYelVoAXGvyPIwlZrk7I6eLe0WdsXRwL6is XXyk8N19NA4tvBv/SujIWp4rBmqGiCmWG6ydAegcC6axjFnuz8jx4t5y6wM/xD+oqjHOxK4KhJFd
lVq6vrbIHeng1HkyLKKnBOAuTml8FpwZS4Pxtad7jM/lZT7psXk7C7Q4g548V4v6drN6Ra9u0HOp chqFvRrRYwZwP05peBVc+cC9l0r4J43PFdvipKem7czQ9RkUFrSz+m6zeEOvqknQ2Dibs9KoO6on
3GLOTHDRYzNT56XwsZG0AJJF6n/dvKY9JZe6e4v8DAiBxmNTG4uNFM8Tz20Ww/H+r+0y5WiYObQP 6rQUHGrDMyCbpf7bzVvap+TGtf8jPwFakxeqKx+oNvp14qktUDref7VdpjwaVpHCwWiqxFBIm6ip
UmDtJdqwiQZbPqrpopj74zwOdSt1h9ZYOZ1Va+p325JvhcA2Z8kp+QsAAP//AwCEhgo7ZQMAAA== wcGeLkrFpyjUV41xLQUfzOmsGl9d77a405qaQmXH7DcAAAD//wMAQklYDmUDAAA=
headers: headers:
CF-RAY: CF-RAY:
- CF-RAY-XXX - CF-RAY-XXX
@@ -66,7 +66,7 @@ interactions:
Content-Type: Content-Type:
- application/json - application/json
Date: Date:
- Tue, 20 Jan 2026 07:35:20 GMT - Tue, 20 Jan 2026 07:55:32 GMT
Server: Server:
- cloudflare - cloudflare
Set-Cookie: Set-Cookie:
@@ -86,13 +86,13 @@ interactions:
openai-organization: openai-organization:
- OPENAI-ORG-XXX - OPENAI-ORG-XXX
openai-processing-ms: openai-processing-ms:
- '473' - '581'
openai-project: openai-project:
- OPENAI-PROJECT-XXX - OPENAI-PROJECT-XXX
openai-version: openai-version:
- '2020-10-01' - '2020-10-01'
x-envoy-upstream-service-time: x-envoy-upstream-service-time:
- '618' - '619'
x-openai-proxy-wasm: x-openai-proxy-wasm:
- v0.1 - v0.1
x-ratelimit-limit-requests: x-ratelimit-limit-requests:

View File

@@ -50,14 +50,14 @@ interactions:
response: response:
body: body:
string: !!binary | string: !!binary |
H4sIAAAAAAAAA4xSXWvcMBB8969Y9HwO9vU+Ur+1JAeBQqH0pbTB6OS1rUReCWl9aQj334t017PT H4sIAAAAAAAAAwAAAP//jFJda9wwEHz3r1j0fA72fTnxW6GU9iglD4FC22A28tpWI0tCWicN4f57
ptAXg3d2RjO7+5IBCN2ICoTqJavBmfymKL5pPtx9/rikzU3x5YF22/3umXa3n4pbsYgMu39Axb9Z kX05O20KfTF4Z2c0s7vPCYBQtShByA5Z9k6n77MsfCRyX9ZDsTnsrp/Wh5v++uu37urzoRWryLB3
V8oOziBrSydYeZSMUbXcbq6v36/WyyIBg23QRFrnOF9dlfmgSefLYrnOi1Vers703mqFQVTwPQMA P0nyC+tC2t5pYmXNBEtPyBRV82J/eXm1KzabEehtTTrSWsfp9iJPe2VUus7WuzTbpvn2RO+skhRE
eEnfaJQa/CkqSGKpMmAIskNRXZoAhLcmVoQMQQeWxGIxgcoSIyXvX3s7dj1XcAdkn0BJgk4fECR0 Cd8TAIDn8RuNmpp+iRKy1UulpxCwJVGemwCEtzpWBIagAqNhsZpBaQ2TGb3fdHZoOy7hExj7CBIN
MQBICk/of9BOkzTwIf1VYB/nch7bMciYiUZjZoAksizjTFKQ+zNyvFg3tnPe7sMfVNFq0qGvPcpg tOqBAKGNAQBNeCT/w3xQBjW8G/9KsPdLOU/NEDBmMoPWCwCNsYxxJmOQ2xNyPFvXtnXe3oU/qKJR
KdoMbJ1I6DEDuE8jGl+lFs7bwXHN9hHTc+WmPOmJaTUzdHUG2bI0s/p2vXhDr26QpTZhNmShpOqx RoWu8oTBmmgzsHViRI8JwO04ouFVauG87R1XbO9pfC7f55OemFezQLcnkC2jXtSL3eoNvaomRqXD
majTRuTYaDsDslnqv928pX1Krqn7H/kJUAodY1M7j41WrxNPbR7j5f6r7TLlZFgE9AetsGaNPm6i YshCouyonqnzRnColV0AySL1327e0p6SK9P+j/wMSEmOqa6cp1rJ14nnNk/xcv/Vdp7yaFgE8g9K
wVaO5nROIjwHxqFuNXXondenm2pd/W67kVulsC1Fdsx+AQAA//8DAEJgbhBiAwAA UsWKfNxETQ0OejonEZ4CU181yrTknVfTTTWu2hR7LKSkJhfJMfkNAAD//wMAw/X5HWIDAAA=
headers: headers:
CF-RAY: CF-RAY:
- CF-RAY-XXX - CF-RAY-XXX
@@ -66,7 +66,7 @@ interactions:
Content-Type: Content-Type:
- application/json - application/json
Date: Date:
- Tue, 20 Jan 2026 07:35:20 GMT - Tue, 20 Jan 2026 07:55:34 GMT
Server: Server:
- cloudflare - cloudflare
Set-Cookie: Set-Cookie:
@@ -86,13 +86,13 @@ interactions:
openai-organization: openai-organization:
- OPENAI-ORG-XXX - OPENAI-ORG-XXX
openai-processing-ms: openai-processing-ms:
- '474' - '499'
openai-project: openai-project:
- OPENAI-PROJECT-XXX - OPENAI-PROJECT-XXX
openai-version: openai-version:
- '2020-10-01' - '2020-10-01'
x-envoy-upstream-service-time: x-envoy-upstream-service-time:
- '498' - '517'
x-openai-proxy-wasm: x-openai-proxy-wasm:
- v0.1 - v0.1
x-ratelimit-limit-requests: x-ratelimit-limit-requests:

View File

@@ -129,6 +129,7 @@ class TestCrewEventOrdering:
) )
crew = Crew(agents=[agent], tasks=[task], verbose=False) crew = Crew(agents=[agent], tasks=[task], verbose=False)
crew.kickoff() crew.kickoff()
crewai_event_bus.flush()
started = collector.first(CrewKickoffStartedEvent) started = collector.first(CrewKickoffStartedEvent)
completed = collector.first(CrewKickoffCompletedEvent) completed = collector.first(CrewKickoffCompletedEvent)
@@ -157,6 +158,7 @@ class TestCrewEventOrdering:
) )
crew = Crew(agents=[agent], tasks=[task], verbose=False) crew = Crew(agents=[agent], tasks=[task], verbose=False)
crew.kickoff() crew.kickoff()
crewai_event_bus.flush()
started = collector.first(CrewKickoffStartedEvent) started = collector.first(CrewKickoffStartedEvent)
completed = collector.first(CrewKickoffCompletedEvent) completed = collector.first(CrewKickoffCompletedEvent)
@@ -183,6 +185,7 @@ class TestCrewEventOrdering:
) )
crew = Crew(agents=[agent], tasks=[task], verbose=False) crew = Crew(agents=[agent], tasks=[task], verbose=False)
crew.kickoff() crew.kickoff()
crewai_event_bus.flush()
crew_started = collector.first(CrewKickoffStartedEvent) crew_started = collector.first(CrewKickoffStartedEvent)
task_started = collector.first(TaskStartedEvent) task_started = collector.first(TaskStartedEvent)
@@ -272,6 +275,7 @@ class TestFlowWithCrewEventOrdering:
flow = SimpleFlow() flow = SimpleFlow()
flow.kickoff() flow.kickoff()
crewai_event_bus.flush()
flow_started = collector.first(FlowStartedEvent) flow_started = collector.first(FlowStartedEvent)
flow_finished = collector.first(FlowFinishedEvent) flow_finished = collector.first(FlowFinishedEvent)
@@ -305,6 +309,7 @@ class TestFlowWithCrewEventOrdering:
flow = FlowWithMethod() flow = FlowWithMethod()
flow.kickoff() flow.kickoff()
crewai_event_bus.flush()
flow_started = collector.first(FlowStartedEvent) flow_started = collector.first(FlowStartedEvent)
method_started = collector.first(MethodExecutionStartedEvent) method_started = collector.first(MethodExecutionStartedEvent)
@@ -336,6 +341,7 @@ class TestFlowWithCrewEventOrdering:
flow = FlowWithCrew() flow = FlowWithCrew()
flow.kickoff() flow.kickoff()
crewai_event_bus.flush()
method_started = collector.first(MethodExecutionStartedEvent) method_started = collector.first(MethodExecutionStartedEvent)
crew_started = collector.first(CrewKickoffStartedEvent) crew_started = collector.first(CrewKickoffStartedEvent)
@@ -387,6 +393,7 @@ class TestFlowWithMultipleCrewsEventOrdering:
flow = TwoCrewFlow() flow = TwoCrewFlow()
flow.kickoff() flow.kickoff()
crewai_event_bus.flush()
crew_started_events = collector.all_of(CrewKickoffStartedEvent) crew_started_events = collector.all_of(CrewKickoffStartedEvent)
@@ -432,6 +439,7 @@ class TestFlowWithMultipleCrewsEventOrdering:
flow = SequentialCrewFlow() flow = SequentialCrewFlow()
flow.kickoff() flow.kickoff()
crewai_event_bus.flush()
crew_started_events = collector.all_of(CrewKickoffStartedEvent) crew_started_events = collector.all_of(CrewKickoffStartedEvent)
@@ -482,6 +490,7 @@ class TestFlowWithMultipleCrewsEventOrdering:
flow = ParentTestFlow() flow = ParentTestFlow()
flow.kickoff() flow.kickoff()
crewai_event_bus.flush()
crew_started_events = collector.all_of(CrewKickoffStartedEvent) crew_started_events = collector.all_of(CrewKickoffStartedEvent)
task_started_events = collector.all_of(TaskStartedEvent) task_started_events = collector.all_of(TaskStartedEvent)