2

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

更新功能和web应用是用django写的,但是因为更新涉及到向另一个网站发出请求,需要几秒钟的时间来处理,我当时在考虑让这些请求并行执行,所以多个用户可以点击不同的更新按钮,并让它快速通过。

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

4

1 回答 1

2

芹菜非常适合这样的计划任务。我在这里找到了一个在 Heroku 上设置工作人员的技巧,虽然我没有使用 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,
},

所有的 Celery文档都非常好。

于 2012-09-14T03:47:42.517 回答