2012-10-08 26 views
6

Estoy enfrentando el siguiente problema con mi proyecto Python/Celery en Eclipse/PyDev. he definido mi función de tarea en el módulo myapp.tasks así:PyDev no reconoce los decoradores de tareas de Apio

@celery.task(max_retries=None) 
def mytask(parm1): 
    ... 
    myapp.myfunction(parm1) 
    ... 

Luego, en otro módulo Deseo enviar una señal de reintento para la tarea que está llamando a la función. Por lo tanto, hago la siguiente manera:

import myapp.tasks 
... 
def myfunction(parm1): 
    ... 
    raise myapp.tasks.mytask.retry(countdown=60) 

Por alguna razón PyDev marca la última línea con un error que dice: 'Undefined variable de importación: reintento' Pero el código realmente funciona. ¿Es este un problema de PyDev que no reconoce decoradores o estoy haciendo algo mal aquí?

+0

¿Instaló apio después de configurar su proyecto Pydev (o más exactamente, sus intérpretes de python)? – RickyA

+1

Mismo problema aquí con ".delay()". ¿Tienes una solución? –

Respuesta

0

Pydev aparentemente está utilizando análisis estático, lo cual es bastante extraño para un lenguaje dinámico. Pero ahora he agregado un truco que debería permitir que PyDev analice de forma estática el módulo de apio. Puede probarlo instalando la rama 3.0:

pip install https://github.com/celery/celery/zipball/3.0 
+5

Estoy usando apio 3.0.12 y sigo teniendo este error en pydev –

0

PyDev usa análisis estático. Puede agregar un "Builtin forzado" para resolver el marcador de error.

  1. Ir a Ventana -> Preferencias
  2. Seleccionar PyDev -> Intérpretes -> Python Intérpretes en el panel izquierdo
  3. Seleccione el intérprete de Python que está utilizando para apio en el panel derecho
  4. Al parte inferior, seleccionar "Bultins forzada" y haga clic en "Nuevo ..."
  5. Añadir myapp.tasks.mytask o cualquier otro tipo requiere

En mi caso, necesitaba anuncio d "celery.decorators" para resolver un error similar. Estoy usando Eclipse Neon (4.6.3), pero la interfaz ha cambiado muy poco. Utilicé esta técnica para resolver errores en Buffers de Protocolo durante varios años.

Cuestiones relacionadas