【发布时间】:2014-10-04 18:05:03
【问题描述】:
我需要在 Web 应用程序的后台运行一些任务(检查代码等)而不阻塞视图。
典型的Queue/Celery 场景中的转折点是,无论最终结果如何,我都必须确保任务能够完成,即使网络应用程序崩溃或重新启动也能幸存下来,直到这些任务完成。
我正在考虑在数据库中记录 multiprocessing.Pool 的参数,并在 webapp 重新启动时启动所有未完成的任务。这是可行的,但我想知道是否有更简单或更划算的方法?
更新:为什么不是芹菜本身?好吧,我在一些项目中使用了 Celery,它确实是一个很棒的解决方案,但对于这项任务来说,它的作用很大:它需要一个单独的服务器、通信等,而我所需要的只是产生一些进程/线程,做一些在其中工作(git clone ...,svn co ...)并检查它们是成功还是失败。另一个问题是我需要解决方案尽可能小,因为我必须让它遵循详细的公司指导方针、程序等,而且我必须通过人力行政和官僚开销才能让 Celery 加入。如果可以的话,我宁愿避免。
【问题讨论】:
-
您提到了 Celery - 是什么让您忽略它并发明自己的解决方案?该任务看起来像是 Celery 的典型用例
标签: python queue pyramid background-process pylons