所以我有一个由Django提供支持的网页。我在数据库中有很多用户, 我想每隔5-10分钟对数据库中的每个用户运行一个特定的任务。 最好的方法是什么?一次最多可以有1000个用户。 像Celery这样的东西对此有用吗?
答案 0 :(得分:2)
芹菜有用这个
是的,Celery带有内置的perodic任务:Celery Beat。
另一个选项是PythonRQ与RQ Scheduler的组合。这是我在最近的一个项目中使用的内容,我对它非常满意。
答案 1 :(得分:1)
我认为以下是你想要的
http://code.google.com/p/django-cron/
Django - Set Up A Scheduled Job?
或者你只是在Linux级别上使用cron
有关如何设置cron的详细信息指南:
http://www.cyberciti.biz/faq/how-do-i-add-jobs-to-cron-under-linux-or-unix-oses/
Linux中的cron job将运行脚本,该脚本在预定义的时间间隔,分钟,每小时,每天,每周有关详细信息,只需在Linux终端上输入“crontab -e”
即可crontab -e
然后加一行(任务)
1 2 3 4 5 /path/to/command arg1 arg2
1:分钟(0-59) 2:小时(0-23) 3:第(0-31)天 4:月(0-12 [12 == 12月]) 5:星期几(0-7 [7或0 ==星期日]) / path / to / command - 要安排的脚本或命令名称
完成后,保存并退出。
答案 2 :(得分:0)
“Celery”允许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”式计划任务的信息: http://docs.celeryproject.org/en/latest/reference/celery.schedules.html
您可能还希望安装RabbitMQ以使其正常运行,因此它可能比您正在寻找的解决方案更复杂,但它将实现您的目标。如果您愿意,也可以使用更轻量级的方法(包括使用数据库本身)以及了解其局限性。