【问题标题】:Buffer for a continuously generated CSV files to upload to MongoDB连续生成的 CSV 文件上传到 MongoDB 的缓冲区
【发布时间】:2021-04-20 01:30:58
【问题描述】:

我试图在我的 Flask 应用程序中找到一种方法,在将每个线程连续处理的多个 csv 存储在缓冲区中,然后再将其上传到 Mongo 数据库。我想使用缓冲区的原因是为了保证一定程度的持久性和正确处理错误(在网络故障的情况下,我想尝试再次将 csv 上传到 Mongo)。

我曾考虑将诸如 Celery 之类的任务队列与消息代理 (rabbitmq) 一起使用,但不确定这是否是正确的方法。抱歉,如果这不是一个适合 SO 的问题——我只是想澄清如何去做。提前谢谢你。

【问题讨论】:

    标签: python mongodb csv buffer


    【解决方案1】:

    听起来你想要类似 linux tail 命令的东西。更新后,Tail 会立即打印文件的每一行。我假设这个 csv 文件是由同时运行的单独程序生成的。如何在 python 中实现tail,请参见How can I tail a log file in Python?

    注意:最好批量转储 CSV,因为它不是实时的,但如果那不重要,它会更有效

    【讨论】:

    • 您好,感谢您的回复。如果我要批量转储 CSV,在将 CSV 转储到 MongoDB 之前,我应该在哪里/如何存储它们?
    • 我会说将它们保存到主目录中的文件夹中。将它们分别保存为文件名的时间戳,以便每个都是唯一的。然后使用每小时执行一次的 Cron 作业(或者需要频繁执行)来处理文件。
    • 保存到目录中的文件夹不会很慢,因为它正在写入磁盘?在这种情况下,使用像 Redis 这样的持久队列是个好主意吗?
    • 这取决于您写入的数据量,您需要什么速度以及您愿意投入多少精力。如果它是低数据速率并且速度无关紧要,那么就不值得实施队列。但如果它是高频数据速率,它可能是值得的。
    猜你喜欢
    • 2018-01-23
    • 2020-06-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多