While registering a scheduler plugin get TypeError: PooledRPCCall.__getattr__.<locals>.send_recv_from_rpc() takes 0 positional arguments but 1 was given
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 2/5
- Tiempo estimado
- 1-3 horas
- Aptitud para principiantes
- 48/100
- Tipo de issue
- Error
- Claridad
- Bien especificado
- Estado de actividad
- Estancado
- Stack tecnológico
- python
- Área
- distributed-systems
Línea de trabajo
Comienza con distributed/core.py en PooledRPCCall.getattr y ejecuta el ejemplo de scheduler-plugin del issue para reproducir el TypeError de Scheduler.add_plugin. Sigue la invocación del callable RPC generado y verifica que el ejemplo registre correctamente el plugin sin el error de argumento posicional, con cobertura de regresión para este recorrido si el repositorio tiene una ubicación de pruebas adecuada.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Describe the issue:
When registering a Dask scheduler plugin via Scheduler.add_plugin, we get the following error:
TypeError: PooledRPCCall.__getattr__.<locals>.send_recv_from_rpc() takes 0 positional arguments but 1 was given
The offending code is in distributed's core.py:
def __getattr__(self, key):
async def send_recv_from_rpc(**kwargs): # THIS IS WHERE THE ERROR IS RAISED
if self.serializers is not None and kwargs.get("serializers") is None:
kwargs["serializers"] = self.serializers
if self.deserializers is not None and kwargs.get("deserializers") is None:
kwargs["deserializers"] = self.deserializers
comm = await self.pool.connect(self.addr)
prev_name, comm.name = comm.name, "ConnectionPool." + key
try:
return await send_recv(comm=comm, op=key, **kwargs)
finally:
self.pool.reuse(self.addr, comm)
comm.name = prev_name
Minimal Complete Verifiable Example:
Taken from your own example of a scheduler plugin, which DOES NOT WORK NOW.
from distributed import Client, LocalCluster, SchedulerPlugin
class MySchedulerPlugin(SchedulerPlugin):
def __init__(self):
self.counter = 0
def transition(self, key, start, finish, *args, **kwargs):
if start == 'processing' and finish == 'memory':
self.counter += 1
def restart(self, scheduler):
self.counter = 0
if __name__ == '__main__':
with Client() as client:
print(f'scheduler={client.scheduler}')
my_scheduler_plugin = MySchedulerPlugin()
client.scheduler.add_plugin(my_scheduler_plugin)
print('Done')
This produces the following;
scheduler=<pooled rpc to 'tcp://127.0.0.1:57991'>
Traceback (most recent call last):
File "/Users/may/Projects/scratch/dask_scheduler/scheduler.py", line 22, in <module>
client.scheduler.add_plugin(my_scheduler_plugin)
TypeError: PooledRPCCall.__getattr__.<locals>.send_recv_from_rpc() takes 0 positional arguments but 1 was given
Anything else we need to know?:
N/A
Environment:
- Dask version:
dask 2024.10.0
distributed 2024.10.0
And the same behavior observed for 2024.11.2
- Python version: 3.10.15 and 3.11.7
- Operating System:
Darwin mac135909 24.2.0 Darwin Kernel Version 24.2.0: Fri Dec 6 18:56:34 PST 2024; root:xnu-11215.61.5~2/RELEASE_ARM64_T6020 arm64Linux login05 5.14.21-150500.55.49_13.0.57-cray_shasta_c #1 SMP Sun May 12 13:35:37 UTC 2024 (33add2b) x86_64 x86_64 x86_64 GNU/Linux
- Install method (conda, pip, source):
- conda and pip
- Lenguaje dominante
- Python
- Estrellas
- 1.7k
- Forks
- 780
- Métricas de merge de PR
- Sin PR fusionados en 30 d
Preparar el entorno
- Sin Dockerfile ni archivo de Docker Compose
- Tiene una plantilla de pull request
- Leer la guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de dask/distributed
-
needs triage
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
dask/distributed#9366 ·
-
needs triage
Dificultad 2/5 1-3 horas Aptitud para principiantes 84/100
dask/distributed#9353 ·
-
documentation
Dificultad 1/5 1-3 horas Aptitud para principiantes 82/100
dask/distributed#8304 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 74/100
dask/distributed#4816 · 2 comentarios ·
-
documentation good first issue
Dificultad 2/5 1-3 horas Aptitud para principiantes 74/100
dask/distributed#2378 · 2 comentarios ·
Todos los issues de dask/distributed
Issues similares
-
Claiming namespace `apoint`Abiertonamespace operations
Dificultad 1/5 Menos de una hora Aptitud para principiantes 82/100
EclipseFdn/open-vsx.org#13573 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
collective/icalendar#1854 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
rancher/rancher-ai-agent#412 ·
Los mantenedores suelen responder en 6 días
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 84/100
TUDelftGeodesy/DePSI#134 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 88/100
HenriquesLab/rxiv-maker#335 ·