如何在后台制作一个改变数据库的代码

2024-09-30 16:41:28 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在制作一个淘汰式投票网站。人们登录,投票给他们最不喜欢的参与者,一天结束时,投票最多的人就不活动了。几乎所有的东西都能工作:登录、投票等等。但是我不知道如何制作一个程序来检查最多的投票,并改变数据库来改变参与者在特定时间的状态,而不需要用户进入网站

我甚至不知道该把密码放在哪里。我如何确保它一直在运行?在我看来,views.py只在用户访问URL时才起作用,因此如果在重新编译投票时没有人访问该网站,它将不起作用,所以这是一个否定的否定。我可以在Django项目之外创建一个脚本来执行此操作,然后用nohup &运行它,但是这样我就失去了模型表示法,不得不进行手动查询,另外,我肯定有更好的,更Django的方法

这个问题有什么解决办法吗?或者你能给我指个方向


Tags: 项目django用户py程序数据库url密码
3条回答

答案是姜果芹菜。它适用于任何需要带条件运行的任务。看看你在芹菜中使用的beats功能

如果您的场景只是根据投票数更新数据库,那么您可以直接使用cron

编写一个脚本,检查投票并更改数据库中用户的状态。在cron中安排它在一天/投票结束时运行一次

将脚本放在外人无法访问的目录中

每天23:30运行一次脚本的cron条目:

30 23 * * * python /root/scripts/status_change_script.py

你可以用芹菜来做这个。芹菜的定期任务-

访问http://docs.celeryproject.org/en/2.0-archived/getting-started/periodic-tasks.htm

@periodic_task(run_every=crontab(minute=0, hour=0))# run every midnight
def check_voting():
      mn_vote = Voting.objects.filter(year='2015').order_by('-voting').first()
      mn_vote.is_win=True
      mn.save()

相关问题 更多 >