Celery 发现具有其他文件名的文件中的任务

django

1个回答

写回答

Fufumaomao

2025-06-29 19:50

+ 关注

Python
Python

Celery 是一个常用的分布式任务队列框架,可用于处理异步任务。在使用 Celery 时,我们通常将任务定义在一个独立的文件中,然后通过调用任务的方式来触发执行。然而,有时候我们可能会遇到这样的情况:我们希望从其他文件中发现并执行任务,而不是在主文件中定义任务。本文将介绍如何根据 Celery 发现具有其他文件名的文件中的任务,并提供相应的案例代码。

案例代码:

假设我们有一个名为 tasks.py 的主文件,我们希望从其他文件中发现任务并执行。首先,我们需要在主文件中导入 Celery,并创建一个 Celery 实例。然后,我们可以使用 Celery 的 autodiscover_tasks 方法来自动发现具有其他文件名的文件中的任务。

Python

from celery import Celery

app = Celery('myapp')

app.autodiscover_tasks(['mytasks'])

在上述代码中,我们使用 Celery 类创建了一个名为 app 的 Celery 实例,并将其命名为 'myapp'。然后,我们使用 autodiscover_tasks 方法来自动发现 'mytasks' 文件夹中的任务。

接下来,我们需要在 'mytasks' 文件夹中创建一个名为 mytask.py 的文件,并在其中定义一个任务。例如,我们定义一个简单的任务,将两个数字相加并返回结果:

Python

# mytask.py

from myapp import app

@app.task

def add_numbers(x, y):

return x + y

在上述代码中,我们首先导入了之前创建的 Celery 实例 app,然后使用 app.task 装饰器将 add_numbers 函数声明为 Celery 任务。该函数接受两个参数 xy,将它们相加并返回结果。

现在,我们可以在主文件中调用这个任务并执行它。例如,我们可以编写以下代码:

Python

# mAIn.py

from myapp import app

from mytasks.mytask import add_numbers

result = add_numbers.delay(5, 3)

print(result.get())

在上述代码中,我们首先导入之前创建的 Celery 实例 app 和任务 add_numbers。然后,我们使用 delay 方法调用任务并传递参数 53。最后,我们使用 get 方法获取任务的执行结果并打印输出。

根据 Celery 发现具有其他文件名的文件中的任务

在上述案例代码中,我们展示了如何使用 Celery 发现具有其他文件名的文件中的任务。通过使用 autodiscover_tasks 方法,我们可以告诉 Celery 在指定的文件夹中自动发现任务并注册它们。这样,我们就可以在主文件中调用这些任务并执行它们。

在本文中,我们介绍了如何根据 Celery 发现具有其他文件名的文件中的任务。通过使用 autodiscover_tasks 方法,我们可以轻松地自动注册这些任务,并在主文件中调用它们。这种方法使我们能够更好地组织和管理任务代码,提高开发效率。

以上就是根据 Celery 发现具有其他文件名的文件中的任务的案例代码及相关介绍。希望本文对你理解和使用 Celery 有所帮助。

举报有用(4分享收藏

Copyright © 2025 IZhiDa.com All Rights Reserved.

知答 版权所有 粤ICP备2023042255号