我已经使用了很多分发任务包,如celery
,python-rq
,它们都依赖于外部服务,如redis
,rabbit-mq
等。生产者和工人(python)的任何本地任务队列(可能是磁盘队列或mem队列?)?
,但通常我并不需要一个queue service
,换句话说,不要安装在我的VPS redis
或其他非蟒蛇服务(也简化环境)
我应该说将producer
和worker
分割成不同的过程(两个代码文件)是很好的。使用multiprocessing.Queue
需要将所有内容放入一个文件中,并且需要编写大量附加代码来捕获ctrl+c
以处理exit
并保存当前入队的任务。这不会发生,通过使用celery
,python-rq
,虽然停止工人和生产者,任务仍然保存在队列中。
我想使用一个本地队列(只能工作在pip install xxx
),如磁盘队列。 经过一番搜索,只找到queuelib(Collection of persistent (disk-based) queues),但遗憾的是它不支持从多进程访问。