PgQueuer:一次一個佇列,構建更順暢的工作流程

banq發表於2024-05-31


PgQueuer 是一個極簡、高效能的 Python 作業佇列庫,充分利用了 PostgreSQL 的強大功能。PgQueuer 專為簡單和高效而設計,使用 PostgreSQL 的 LISTEN/NOTIFY 輕鬆管理作業佇列。

特徵

  • 簡單整合:使用 PostgreSQL 輕鬆與現有 Python 應用程式整合。
  • 高效的併發處理:利用 PostgreSQLFOR UPDATE SKIP LOCKED進行可靠且併發的作業處理。
  • 實時通知:利用LISTEN並NOTIFY實時更新工作狀態的變化。

安裝
要安裝 PgQueuer,只需使用 pip 安裝以下命令:

pip install PgQueuer

示例用法
以下是在典型場景中使用 PgQueuer 處理傳入資料訊息的方法:

import asyncio

import asyncpg
from PgQueuer.models import Job
from PgQueuer.qm import QueueManager


async def main() -> None:
    pool = await asyncpg.create_pool(min_size=2)
    qm = QueueManager(pool)

    N = 1_000
    # Enqueue messages.
    for n in range(N):
        await qm.queries.enqueue(<font>"fetch", f"this is from me: {n}".encode())

    @qm.entrypoint(
"fetch")
    async def process_message(job: Job) -> None:
        print(f
"Processed message: {job}")

    await qm.run()


if __name__ ==
"__main__":
    asyncio.run(main())


資料庫配置
PgQueuer 提供了一個命令列介面,可輕鬆管理安裝和解除安裝。確保您已配置環境變數或使用適當的標誌來指定資料庫憑據。

安裝 PgQueuer 資料庫元件:
python -m PgQueuer install 

解除安裝 PgQueuer 資料庫元件:
python -m PgQueuer uninstall 

CLI 支援多個標誌來自定義連線設定。用於--help檢視所有可用選項。

啟動儀表板的示例命令:
python -m PgQueuer dashboard --interval 10 --tail 25 --table-format grid

監聽
python -m PgQueuer listen
listen命令允許您在指定通道上實時監控 PostgreSQL NOTIFY 訊息。此功能對於除錯和觀察應用程式處理的原始事件流量特別有用。

基準測試摘要
PgQueuer 經過了基本的基準測試,以評估其在不同作業量和併發級別下的效能。
主要觀察:

  • 可擴充套件性:併發性越高,效能就越高,證明了該庫能夠有效地管理更大的工作負載。
  • 一致性:PgQueuer 在不同的作業數量之間保持一致的吞吐量,確保可靠的效能。
  • 最佳效能:觀察到的最高吞吐量為併發級別為 5 時每秒約 5,200 個作業。


 

相關文章