使用线程来更新Heroku上的数据库?

时间:2012-09-13 23:13:33

标签: python django multithreading heroku

创建要在Heroku上部署的小型Web应用程序,我们希望在用户单击更新按钮时更新数据库中的条目。每天,我们会自动浏览并更新过去24小时内某些用户尚未更新的所有条目。

更新功能和Web应用程序是用Django编写的,但由于更新涉及向另一个网站发出请求,因此需要几秒钟的时间来处理,我正在考虑让这些请求并行执行,因此多个用户可以同时点击不同的更新按钮,并快速完成。

我们正在考虑在Heroku上使用Scheduler进行24小时更新,但是我们可以在这种用例中使用线程应用程序/实现吗?任何提示都会很棒。

1 个答案:

答案 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都非常好。