我想写一个守护进程:
- 从包含 zip 文件路径的队列(sqs、rabbit-mq 等)中读取消息
- 更新数据库中的记录,例如“此作业正在处理”
- 读取上述存档的内容并将一行插入数据库,其中包含从找到的每个文件的文件元数据中挑选出的信息
- 将每个文件复制到 s3
- 删除 zip 文件
- 将作业标记为“完成”
- 读取队列中的下一条消息,重复
这应该作为服务运行,并由当有人通过 Web 前端上传文件时排队的消息启动。上传者不需要立即看到结果,但上传会在后台相当方便地处理。
我对 python 很流利,所以首先想到的是编写一个带 twisted 的简单服务器来处理每个请求并执行上述过程。但是,我从来没有写过这样可以在多用户上下文中运行的东西。它不会每分钟或每小时处理数百次上传,但如果它可以一次处理几个,那就太好了,合理的。我也不太熟悉编写多线程应用程序和处理阻塞等问题。
人们过去是如何解决这个问题的?我可以采取哪些其他方法?
提前感谢您的帮助和讨论!