我有一个由Apache提供的Pylons Web应用程序(mod_wsgi,prefork)。由于Apache,有多个独立的进程同时运行我的应用程序代码。应用程序执行的一些非关键任务我希望推迟在后台处理以改善“实时”响应时间。所以我在想任务队列,许多Apache进程向这个队列添加任务,一个单独的Python进程逐个处理它们并从队列中删除。
最好将队列保存到磁盘,这样排队的未处理任务不会因断电,重启服务器等而丢失。问题是实现此类队列的合理方法是什么?
至于我尝试过的事情:我开始使用简单的SQLite数据库和单个表来存储队列项。在负载测试中,当增加并发级别时,我开始出现“数据库锁定”错误,正如预期的那样。 quick'n'dirty修复是用MySQL替换SQLite - 它很好地处理并发问题,但对于我需要做的简单事情感觉有点过分。与队列相关的数据库操作也会在我的分析报告中显着显示。