PyDev 不识别芹菜任务装饰器



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

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

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

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

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

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

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

PyDev 使用静态分析。 您可以添加"强制内置"来解决错误标记。

  1. 转到窗口 ->首选项
  2. 在左窗格中选择 PyDev -> 解释器 -> Python 解释器
  3. 在右窗格中选择您用于 Celery 的 python 解释器
  4. 在底部,选择"强制布尔廷斯",然后单击"新建..."
  5. 添加 myapp.tasks.mytask 或任何其他所需的类型

就我而言,我需要添加"celery.decorators"来解决类似的错误。我使用的是Eclipse Neon(4.6.3),但界面变化很小。 多年来,我一直使用这种技术来解决协议缓冲区中的错误。

相关内容

  • 没有找到相关文章

最新更新