Sphinx无法自动记录已装饰的Celery任务

4
我正在尝试使用Sphinx来记录以下Celery任务,但是在生成Sphinx文档时却得到了一个空文档:
@celery.task(name='taskname')
def taskname(data):
    """
    Some documentation

    """
    ...

...然而以下内容的文档记录良好:

def non_decorated_function(data):
    """
    Some documentation

    """
    ...

我知道celery任务装饰器会使函数签名被篡改,但我认为在conf.py中以下代码应该可以解决这个问题:

extensions = [
    'sphinx.ext.autodoc',
    'celery.contrib.sphinx',
]

我的.rst文件内容如下:

.. automodule:: tasks
    :members:
    :undoc-members:
    :show-inheritance:

使用自动任务确实可行,但我希望能够使用自动模块来完成此项工作,因为我要将其添加到一个重要的代码库中:

.. automodule:: tasks
    :members:
    :undoc-members:
    :show-inheritance:
.. autotask:: tasks.taskname

有没有办法修复celery任务装饰器,以便支持Sphinx文档?

无论换行状态如何,这种情况都会发生;对于造成的困惑,我们深感抱歉! - Shookit
你尝试过使用 autotask:: 吗? - Kobi K
1
"autotask"是官方的方法,请参阅此处 - Kobi K
我看到了,我猜想automodule可以自动接收任务,因为autotask被指定为“手动”方法。如果有其他方法,我会留下这个问题,但感谢您的帮助。 - Shookit
2
@KobiK,这不是文档所说的。 "安装了扩展程序后,autodoc将自动查找任务装饰对象..."和"使用.. autotask::手动记录任务。"自动部分似乎得到了官方支持,但并不起作用。只有手动部分起作用。 - kitti
显示剩余5条评论
1个回答

2
请查看官方文档,可以在这里找到。
似乎你需要在docs/conf.py文件中加入'celery.contrib.sphinx'

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接