我已經使用了很多分發任務包,如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),但遺憾的是它不支持從多進程訪問。