<td id="aqqih"></td>

<dd id="aqqih"></dd>
  1. <span id="aqqih"></span>
  2. <ol id="aqqih"></ol>

    celery怎么為不同異步任務分配不同worker

    蝸牛 互聯網技術資訊 2022-10-15 49 0

    今天小編給大家分享一下celery怎么為不同異步任務分配不同worker的相關知識點,內容詳細,邏輯清晰,相信大部分人都還太了解這方面的知識,所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。

    背景:

    之前所有的異步任務都由統一的一個worker來消費,這樣有個問題,每次更新某個異步任務代碼后,需要重啟worker,如果有在運行的異步任務,那面重啟后就暫停了,影響業務。

    所以想到把不通的任務分配到不通的worker,如果更新某個任務代碼,重啟對應worker即可,不會影響其他業務。

    開搞

    1、配置celery,按正則匹配異步任務名,分配到指定消費隊列

    這里創建4個消費隊列,release,job,sync,celery(默認)

    匹配到sync_release的任務,會調度到release隊列消費,以此類推,支持正則匹配

    import?re
    #?specify?worker?queue
    #?https://docs.celeryq.dev/en/latest/userguide/routing.html
    app.conf.task_routes?=?([
    ????('cmapp.tasks.sync_release',?{'queue':?'release'}),
    ????(re.compile(r'.*(job*|Cdd*)'),?{'queue':?'job'}),
    ????(re.compile(r'.*(delay*|owncloud*)'),?{'queue':?'sync'}),
    ????(re.compile(r'.*(clean*|keycloak*)'),?{'queue':?'celery'}),
    ],)

    2、啟動消費隊列

    -Q指定消費隊列名稱

    --hostname配置worker名

    --concurrency配置最大并發

    [program:q_release]
    environment=ENV=production
    directory=/opt/mmback
    command=/opt/envs/env-mmweb/bin/celery?-A?mmback?worker?-l?info?--concurrency=20?-Q?release?--hostname=release@%%h
    autorestart=true
    autostart=true

    supervisorctl update

    可以看到已經有release任務在消費。

    以上就是“celery怎么為不同異步任務分配不同worker”這篇文章的所有內容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會為大家更新不同的知識,如果還想學習更多的知識,請關注蝸牛博客行業資訊頻道。

    免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:niceseo99@gmail.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

    評論

    日本韩欧美一级A片在线观看
    <td id="aqqih"></td>

    <dd id="aqqih"></dd>
    1. <span id="aqqih"></span>
    2. <ol id="aqqih"></ol>