gpt4 book ai didi

python - 有没有办法在特定时间运行特定功能?

转载 作者:太空宇宙 更新时间:2023-11-04 01:53:28 26 4
gpt4 key购买 nike

我现在正在制作一个网站,教师发布作业,学生提交作业。我制作了公告板,他们可以张贴他们的公告或提交,但不知道如何检查那些没有提交作业的人。我想要一些在指定时间自动运行的功能(在这种情况下,在作业的截止日期,该功能判断并收集谁没有完成作业)

我找了一些与日期时间相关的库,但一无所知。

作业/模型.py

class Assignment(models.Model):
group = models.ForeignKey(Group, on_delete=models.CASCADE)
index_in_group = models.IntegerField()
title = models.CharField(max_length=30, verbose_name='name')
content = models.TextField(verbose_name=content')
due_date = models.DateTimeField(verbose_name='due')
created_at = models.DateTimeField(auto_now_add=True)

class Done(models.Model):
assignment = models.ForeignKey(Assignment, on_delete=models.CASCADE)
index_in_assignment = models.IntegerField()
author = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
done_img = models.ImageField(upload_to='AssignmentsDone')
injung = models.IntegerField(default=0)
created_at = models.DateTimeField(auto_now_add=True)

函数应该是这样的:(不是确切的 - 只是备忘录)

def check_submission(request, assignment_id):  
members = Members of the group (I will retrieve this thoroughly when actually code)
submissions = Done.objects.filter(assignment.id = assignment_id)
did_hw = [x.author for x in submissions]
for member in members:
if member not in did_hw:
mark as unsubmitter

这篇文章太长了..但问题其实很简单。我只是想知道是否有一种方法可以让某个功能在特定的指定时间用户输入时起作用。

最佳答案

您可以在 Django 中使用 celery :

Celery

那么如果你有这样一个函数:

@shared_task
def add(x, y):
return x + y

您将可以在管理面板上访问它,并且可以安排它运行的时间。

有几种方法可以运行任务:

1 - 在一个时间间隔内运行一个任务。 (例如每 10 秒)

2 - 延迟任务。 (task_function.delay())

3 - 安排在特定时间运行任务。

注意:周期性任务需要 celery beat:celery/django-celery-beat

在您的情况下,您可以创建一个检查所有作业的函数,然后每 5 分钟运行一次该函数,或者如果截止日期都是固定的,则只需在特定时间运行该函数。

关于python - 有没有办法在特定时间运行特定功能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57474264/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com