Celery+python+redis非同步執行定時任務

來源:互聯網
上載者:User

標籤:cli   read   load   ase   列印   app   進入   release   代碼   

我之前的一篇文章中寫了【Celery+django+redis非同步執行任務】 
博文:http://blog.csdn.net/apple9005/article/details/54236212 
你會發現,這些代碼並不依賴django架構,隨便寫到一個py檔案中,就可以輕鬆的執行成功,這是因為這些代碼並沒有用到django-celery,django-redis等依附於django架構的東西。 
今天,參照官方文檔樣本,測試一下celery的非同步執行定時任務如何。我先是在django架構內執行了一遍,沒有問題;現在直接寫個py檔案,命令列下執行試試

1.環境搭建

通過pip 安裝 celery、redis 
pip install celery 
pip install redis

預設安裝celery 最新版是4.0.2 
預設安裝redis 最新版是2.10.5

另外不要忘記安裝redis服務:

# wget http://download.redis.io/releases/redis-3.2.6.tar.gz# tar xzf redis-3.2.6.tar.gz# cd redis-3.2.6# make# src/redis-server   # 啟動redis服務,看清楚,這是在你的redis-3.2.6目錄下執行的# src/redis-cli   # 啟動用戶端
2.編寫py

直接vim搞起了

$ vim tesks.py
from celery import Celeryfrom celery.schedules import crontabapp = Celery(‘tasks‘, broker=‘redis://localhost:6379/0‘)@app.on_after_configure.connectdef setup_periodic_tasks(sender, **kwargs):    # Calls test(‘hello‘) every 10 seconds.    sender.add_periodic_task(10.0, test.s(‘hello‘), name=‘add every 10‘)    # Calls test(‘world‘) every 30 seconds    sender.add_periodic_task(30.0, test.s(‘world‘), expires=10)    # Executes every Monday morning at 7:30 a.m.    sender.add_periodic_task(        crontab(hour=7, minute=30, day_of_week=1),        test.s(‘Happy Mondays!‘),    )@app.taskdef test(arg):    print(arg)

按住shift鍵+Z+Z,儲存檔案並退出

3.在新命令視窗中啟動redis服務

怎麼啟動? 
進入你的redis目錄

$ cd redis-3.2.6$ src/redis-3.2.6
4.在新視窗中啟動celery

進入你tasks.py所在目錄,執行:

$ celery -A tasks worker --loglevel=info

此時,非同步服務已經可用了,但定時任務並沒有執行,怎麼回事?你還需要再啟動另一服務,如下

5.在新視窗中啟動beat

還是要進入你tasks.py所在目錄,執行:

$ celery -A tasks beat

 

啟動後的樣子: 

看一下第4步的視窗,是不是有列印輸出?good!每隔10秒列印一次hello,每隔30秒列印一次world! 

具體你的項目要設定多長時間執行任務,可參見官方文檔的參數說明。 
附官方文檔地址:http://docs.celeryproject.org/en/latest/

附:如何監控Celery?

平行處理架構Celery的Web監控管理服務-Flower 
參見連結 
https://my.oschina.net/u/2306127/blog/420929 
http://flower-docs-cn.readthedocs.io/zh/latest/index.html

Celery+python+redis非同步執行定時任務

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.