diff --git a/parsl/monitoring/monitoring.py b/parsl/monitoring/monitoring.py
index <HASH>..<HASH> 100644
--- a/parsl/monitoring/monitoring.py
+++ b/parsl/monitoring/monitoring.py
@@ -6,6 +6,7 @@ import time
 import typeguard
 import datetime
 import zmq
+from functools import wraps
 
 import queue
 from parsl.multiprocessing import ForkProcess, SizedQueue
@@ -324,6 +325,7 @@ class MonitoringHub(RepresentationMixin):
         """ Internal
         Wrap the Parsl app with a function that will call the monitor function and point it at the correct pid when the task begins.
         """
+        @wraps(f)
         def wrapped(*args: List[Any], **kwargs: Dict[str, Any]) -> Any:
             # Send first message to monitoring router
             send_first_message(try_id,
adds wraps to monitoring so functions have their names back (#<I>)

Callables lose their name attributes when monitoring is turned on as the wrapper function for monitoring doesn't wrap callables correctly. More details can be found in this issue: <URL>