1616
1717from noteburst .exceptions import JobNotFoundError , NoteburstJobError
1818
19+ from ...events import (
20+ EnqueueNotebookExecutionFailure ,
21+ EnqueueNotebookExecutionSuccess ,
22+ Events ,
23+ events_dependency ,
24+ )
1925from .models import NotebookResponse , PostNotebookRequest
2026
2127v1_router = APIRouter (tags = ["v1" ], route_class = SlackRouteErrorHandler )
@@ -33,8 +39,10 @@ async def post_nbexec(
3339 * ,
3440 request : Request ,
3541 response : Response ,
42+ user : Annotated [str , Depends (auth_dependency )],
3643 logger : Annotated [structlog .BoundLogger , Depends (auth_logger_dependency )],
3744 arq_queue : Annotated [ArqQueue , Depends (arq_dependency )],
45+ events : Annotated [Events , Depends (events_dependency )],
3846) -> NotebookResponse :
3947 """Submits a notebook for execution. The notebook is executed
4048 asynchronously via a pool of JupyterLab (Nublado) instances.
@@ -61,14 +69,24 @@ async def post_nbexec(
6169 and (if available) the notebook (`ipynb`) result. See
6270 `GET /v1/notebooks/{job_id}` for more information.
6371 """
64- logger .debug ("Enqueing a nbexec task" )
65- job_metadata = await arq_queue .enqueue (
66- "nbexec" ,
67- ipynb = request_data .get_ipynb_as_str (),
68- kernel_name = request_data .kernel_name ,
69- enable_retry = request_data .enable_retry ,
70- timeout = request_data .timeout ,
71- )
72+ try :
73+ logger .debug ("Enqueing a nbexec task" )
74+ job_metadata = await arq_queue .enqueue (
75+ "nbexec" ,
76+ ipynb = request_data .get_ipynb_as_str (),
77+ kernel_name = request_data .kernel_name ,
78+ enable_retry = request_data .enable_retry ,
79+ timeout = request_data .timeout ,
80+ )
81+ await events .enqueue_nbexec_success .publish (
82+ EnqueueNotebookExecutionSuccess (username = user )
83+ )
84+ except :
85+ await events .enqueue_nbexec_failure .publish (
86+ EnqueueNotebookExecutionFailure (username = user )
87+ )
88+ raise
89+
7290 logger .info ("Finished enqueing an nbexec task" , job_id = job_metadata .id )
7391 response_data = await NotebookResponse .from_job_metadata (
7492 job = job_metadata , request = request
0 commit comments