PyDev无法识别Celery任务装饰器

spo*_*boy 6 python eclipse pydev celery

我在Eclipse/PyDev中使用我的Python/Celery项目遇到了以下问题.我在myapp.tasks模块中定义了我的任务函数,如下所示:

@celery.task(max_retries=None)
def mytask(parm1):
    ...
    myapp.myfunction(parm1)
    ...
Run Code Online (Sandbox Code Playgroud)

然后,在另一个模块中,我希望向正在调用该函数的任务发送重试信号.所以,我喜欢这样:

import myapp.tasks
...
def myfunction(parm1):
    ...
    raise myapp.tasks.mytask.retry(countdown=60)
Run Code Online (Sandbox Code Playgroud)

由于某种原因,PyDev用最后一行标记错误说:'导入的未定义变量:重试'但代码实际上有效.这是一个不识别装饰者的PyDev问题,还是我在这里做错了什么?

ask*_*sol 0

Pydev 显然使用静态分析,这对于动态语言来说相当奇怪。但我现在添加了一个 hack,应该可以让 PyDev 成功地静态分析 celery 模块。您可以通过安装 3.0 分支来尝试一下:

pip install https://github.com/celery/celery/zipball/3.0
Run Code Online (Sandbox Code Playgroud)

  • 我正在运行 celery 3.0.12,但在 pydev 中仍然出现此错误 (5认同)