创建要在Heroku上部署的小型Web应用程序,我们希望在用户单击更新按钮时更新数据库中的条目。每天,我们会自动浏览并更新过去24小时内某些用户尚未更新的所有条目。
更新功能和Web应用程序是用Django编写的,但由于更新涉及向另一个网站发出请求,因此需要几秒钟的时间来处理,我正在考虑让这些请求并行执行,因此多个用户可以同时点击不同的更新按钮,并快速完成。
我们正在考虑在Heroku上使用Scheduler进行24小时更新,但是我们可以在这种用例中使用线程应用程序/实现吗?任何提示都会很棒。
答案 0 :(得分:2)
Celery非常适合这样的计划任务。我找到了在Heroku here上设置工作人员的黑客攻击,虽然我没有使用Heroku,所以你自己就在那里。
芹菜的使用看起来很简单:
@celery.task
def do_costly_database_update(some_data):
# do stuff
pass
# And then in a view...
do_costly_database_update.delay(some_data)
编辑: Celery还可以使用如下配置条目处理重复性任务,例如每晚更新:
'every-night': {
'task': 'tasks.do_costly_database_update',
'schedule': crontab(hour=0, minute=0),
'args': some_data,
},
所有芹菜docs都非常好。