Code: Select all
order_details_tasks = [
asyncio.create_task(
self.launch_individual_order_details(order),
name=f"task_order_{order.id}",
)
for order in active_orders
]
results = await asyncio.gather(*order_details_tasks, return_exceptions=True)
for task, result in zip(order_details_tasks, results):
if isinstance(result, Exception):
print(f"⚠️ Task '{task.get_name()}' raised an exception: {result}")
else:
print(f"✅ Task '{task.get_name()}' succeeded with result: {result}")
Code: Select all
logger.debug(f"Sending order details with success for order: {order.id}")
await order_service.send_order_request(order)
Das Problem, mit dem wir konfrontiert sind Laden Sie unsere Schoten ein, wenn der Pod 70% der CPU -Grenzen verwendet, die wir ihnen geben. Wir bemerken, dass einige unserer Aufgaben einfach die Ausführung brechen und die Ereignisschleife nicht über einen möglichen Fehler informieren.
Wir haben dies entdeckt, weil wir nach einigen Ladetesten einige Skripte durchführten, um den Transaktionsstatus zu überprüfen, und festgestellt haben, dass einige Bestell -IDs nur den Transaktionsstatus ausstehend hatten, sodass sie die Anfrage nicht einmal an die externe API ausgeführt haben. Darüber hinaus haben wir festgestellt, dass für alle in diesem Zustand befandenen Bestellungen sie nicht im Aufgabenprotokoll der Succes erschienen sind: < /p>
Code: Select all
print(f"✅ Task '{task.get_name()}' succeeded with result: {result}").
< /code>
und sie werden auch nicht im Fehleraufgabeprotokoll angezeigt: < /p>
print(f"⚠️ Task '{task.get_name()}' raised an exception: {result}").
Code: Select all
logger.debug(f"Sending order details with success for order: {order.id}")
Hat jemand eine Idee Warum können diese Fälle stattfinden? < /p>
import asyncio
import aiohttp
async def stack_overflow_script(active_orders):
order_details_tasks = [
asyncio.create_task(
launch_individual_order_details(order),
name=f"task_order_{order}",
)
for order in active_orders
]
results = await asyncio.gather(*order_details_tasks, return_exceptions=True)
for task, result in zip(order_details_tasks, results):
if isinstance(result, Exception):
print(f"
else:
print(f"
async def launch_individual_order_details(order):
print(f"Sending round details for play: {order}")
await send_order_request(order)
async def send_order_request(order):
params = dict(order_id=order)
try:
async with aiohttp.ClientSession(
) as session:
async with session.request(
"POST",
url="https://stack-mre.free.beeceptor.com/order",
timeout=10,
json=params
) as resp:
resp_json = await resp.json()
return resp_json
except asyncio.TimeoutError:
return
asyncio.run(stack_overflow_script([2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20]))
< /code>
oben ist ein minimal reproduzierbares Skript dessen, was ich erreichen möchte. Ich weiß nicht, ob mein Problem beim Ausführen dieses Skripts stattfinden wird, aber ich möchte teilen, dass einige dieser Aufgaben manchmal nicht aus der Thread -Ereignisschleife ausführen und einfach verschwinden, ohne nur einen Fehler zur Ausführung zurückzugeben. < /P>