Python 如何在Django测试芹菜周期任务?

Python 如何在Django测试芹菜周期任务?,python,django,cron,celery,periodic-task,Python,Django,Cron,Celery,Periodic Task,我有一个简单的定期任务: from celery.decorators import periodic_task from celery.task.schedules import crontab from .models import Subscription @periodic_task(run_every=crontab(minute=0, hour=0)) def deactivate_subscriptions(): for subscription in Subscript

我有一个简单的定期任务:

from celery.decorators import periodic_task
from celery.task.schedules import crontab
from .models import Subscription

@periodic_task(run_every=crontab(minute=0, hour=0))
def deactivate_subscriptions():
    for subscription in Subscription.objects.filter(is_expired=True):
        print(subscription)
        subscription.is_active = False
        subscription.can_activate = False
        subscription.save()
我想用测试来覆盖它


我找到了有关如何测试简单任务的信息,如@shared_task,但我找不到测试
@periodic_task
的示例,使用函数
apply()

使用装饰器定义定期任务时,可以通过以下方式访问crontab配置:

任务。py

@periodic_task(
    run_every=(crontab(minute="*/1")),
)
def my_task():
    pass
需要访问的某个文件

from .tasks import my_task

crontab = my_task.run_every

hours_when_it_will_run = crontab.hour
minutes_when_it_will_run = crontab.minute
day_of_the_week_when_it_will_run = crontab.day_of_week
day_of_the_month_when_it_will_run = crontab.day_of_month
month_of_year_when_it_will_run = crontab.month_of_year

通过这种方式,您可以访问何时执行任务,并检查测试是否达到预期时间。

您可以调用此方法,就像调用单元测试框架中的任何其他方法一样。。。你到底想测试什么?这项任务将在每天午夜启动?或者方法中的路径?是的,我想检查crontab是否有效。这应该在
芹菜
自己的单元测试中介绍。。。我不确定您是否能够对该机制进行单元测试。@Narnikamarnik您是否能够实现这一点?