【问题标题】:Using Threading to Update Database on Heroku?使用线程更新 Heroku 上的数据库?
【发布时间】:2012-09-13 23:13:32
【问题描述】:

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

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

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

【问题讨论】:

  • 小心共享资源被不同的线程修改...总是有点粗略...确保使用某种形式的锁定机制

标签: python django multithreading heroku


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多