Python 运行定期任务
所以我有一个由Django支持的网页。我在数据库里有很多用户, 我想每5-10分钟对数据库中的每个用户运行一个特定的任务。 最好的方法是什么?一次最多可以有1000个用户。Python 运行定期任务,python,django,Python,Django,所以我有一个由Django支持的网页。我在数据库里有很多用户, 我想每5-10分钟对数据库中的每个用户运行一个特定的任务。 最好的方法是什么?一次最多可以有1000个用户。 这样做有用吗?我想下面就是你想要的 或者您只是在linux级别上使用cron 有关如何设置cron的详细信息指南: linux中的cron作业将按预定义的时间间隔、分钟、小时、每日、每周运行脚本 有关详细信息,只需在Linux终端上键入“crontab-e” crontab -e 然后添加一行(任务) 1:分钟(0-
这样做有用吗?我想下面就是你想要的 或者您只是在linux级别上使用cron 有关如何设置cron的详细信息指南: linux中的cron作业将按预定义的时间间隔、分钟、小时、每日、每周运行脚本 有关详细信息,只需在Linux终端上键入“crontab-e”
crontab -e
然后添加一行(任务)
1:分钟(0-59)
2:小时(0-23)
第3天(0-31)
4:月份(0-12[12==12月])
5:一周中的某一天(0-7[7或0==周日])
/path/to/command-要计划的脚本或命令名
完成后,保存并退出。“芹菜”让Python应用程序(如Django)可以轻松运行后台进程。它最初是专门为Django建造的
他们的示例显示了添加两个数字的简单任务:
from celery.decorators import task
@task
def add(x, y):
return x + y
您可以在后台执行任务,也可以等待任务完成:
>>> result = add.delay(8, 8)
>>> result.wait() # wait for and return the result
16
以下是有关“cron”之类的计划任务的信息:
您可能还需要安装以使其正常工作,因此它可能比您正在寻找的解决方案更复杂,但它将实现您的目标。如果您愿意(包括使用DB本身)并且理解其局限性,也可以使用更轻的方法来安装它
像芹菜这样的东西有用吗
是的,芹菜带有内置的perodic任务:
另一种选择是与联合国合作。这是我在最近的一个项目中使用的,我对此非常满意。+1获取cron工作建议。因为它很简单,而且实际上是一个数据库操作工作,与应用程序关系不大,所以不要把它放在Django应用程序中。如果您想扩展并拥有许多Django InstanceElery,那么它是很好的,并且可以正常工作,但是它需要一个代理队列和工作实例。如果您真的需要完成一些实时分布式硬核作业,请使用它。如果只需要一个计划作业,请不要使用它。什么是代理队列和工作实例。每个用户在数据库中都会有一堆网页URL。因此,对于数据库中的每个用户,我必须获取其中的每个网页并对其进行处理。芹菜是最好的还是下面提到的芹菜之一关于芹菜,请查看官方教程和文档。我不认为芹菜是最好的,甚至不是一种选择,只要按时完成预定的任务。尽管芹菜有Django绑定,但它不会使像您这样的任务比cron config+简单脚本更容易。如果您想在脚本中访问Django ORM,这并不难,请进行一些搜索。
>>> result = add.delay(8, 8)
>>> result.wait() # wait for and return the result
16