所以我有一个由 Django 提供支持的网页。我在数据库中有一堆用户,我想每 5 到 10 分钟对数据库中的每个用户运行一次特定任务。最好的方法是什么?一次最多可以有 1000 个用户。像芹菜这样的东西对此有用吗?
3 回答
像芹菜这样的东西对这个有用吗
是的,Celery 带有内置的周期性任务:Celery Beat。
另一种选择是PythonRQ与RQ Scheduler结合使用。这是我在最近的一个项目中使用的,我对此非常满意。
我认为下面是你想要的
http://code.google.com/p/django-cron/
或者你只是在 linux 级别使用 cron
如何设置 cron 的详细指南:
http://www.cyberciti.biz/faq/how-do-i-add-jobs-to-cron-under-linux-or-unix-oses/
linux中的cron作业将在预定义的时间间隔、分钟、每小时、每天、每周运行脚本
有关详细信息,您只需在 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 == 十二月]) 5:星期几(0-7 [7或 0 == sunday]) /path/to/command - 脚本或命令名称来安排
完成后,保存并退出。
“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以使其正常工作,因此它可能比您正在寻找的解决方案更复杂,但它会实现您的目标。如果您愿意(包括使用数据库本身)并且您了解限制,也可以使用更轻量级的方法来安装它。