python 中与 SPSC 队列的进程间通信

Interprocess communication with SPSC queue in python

我有多个写入密集型 Python 应用程序(producer1.pyproducer2.py、...)并且我想实现一个异步、非阻塞的编写器(consumer.py) 作为一个单独的进程,这样生产者就不会被磁盘访问或争用阻塞。

为了使其更易于优化,假设我只需要公开一个日志记录调用,该调用将固定长度的字符串从生产者传递给编写者,并且写入的文件不需要按调用时间排序。并且目标平台可以是 Linux-only。我应该如何在调用线程上以最小的延迟代价实现它?

这似乎是多个无锁 SPSC 队列的理想设置,但我找不到任何 Python 实现。


编辑 1

我可以在 /dev/shm 上将循环缓冲区实现为内存映射文件,但我不确定在 Python 上是否会有原子 CAS?

最简单的方法是在 consumer.py 中使用异步 TCP/Unix 套接字服务器。
在这种情况下,使用 HTTP 将是一项开销。

生产者,TCP/Unix套接字客户端,将向消费者发送数据,然后消费者将立即响应,然后将数据写入磁盘驱动器。

消费者中的文件 IO 正在阻塞,但它不会如上所述阻塞生产者。