欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

tornado+celery的簡(jiǎn)單使用詳解

 更新時(shí)間:2019年12月21日 11:06:55   作者:github_25679381  
今天小編就為大家分享一篇tornado+celery的簡(jiǎn)單使用詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來(lái)看看吧

celery是實(shí)現(xiàn)一個(gè)簡(jiǎn)單,靈活可靠的分布式任務(wù)隊(duì)列系統(tǒng)的好選擇

tornado則不用過多介紹

在開發(fā)機(jī)上安裝rabbitmq這里就不介紹了

首先是task文件的編寫

task.py

#coding=utf-8
from celery import Celery
from celery.bin import worker as celery_worker
import celeryconfig

broker = 'amqp://'
backend = 'amqp'
app = Celery('celery_test', backend=backend, broker=broker)
app.config_from_object(celeryconfig)

@app.task
def mytask0(task_name):
  print "task0:%s" %task_name
  return task_name 

@app.task
def mytask1(task_name):
  print "task1:%s" %task_name
  return task_name 

def worker_start():
  worker = celery_worker.worker(app=app)
  worker.run(broker=broker, concurrency=4,
        traceback=False, loglevel='INFO')

if __name__ == "__main__":
  worker_start()

celeryconfig.py文件中包含對(duì)celery的配置

#coding=utf-8
from kombu import Queue
CELERY_DEFAULT_QUEUE = 'mytask0'
CELERY_QUEUES = (
  Queue('mytask0',  routing_key='task.mytask0'),
  Queue('mytask1',  routing_key='task.mytask1'),
)
CELERY_DEFAULT_EXCHANGE_TYPE = 'direct'
CELERY_DEFAULT_ROUTING_KEY = 'task.mytask0'
CELERY_TIMEZONE = 'Asia/Shanghai'
CELERY_ROUTES = {
  'task.mytask0': {
    'queue': 'mytask0',
    'routing_key': 'task.mytask0',
  },
  'task.mytask1': {
    'queue': 'mytask1',
    'routing_key': 'task.mytask1',
  },
}

執(zhí)行python task.py將會(huì)啟動(dòng)worker

tornado調(diào)用celery將阻塞任務(wù)變?yōu)榉亲枞?/p>

這會(huì)使用到tcelery模塊,即tornado下的一個(gè)非阻塞的broker實(shí)現(xiàn)

app.py

#coding=utf-8
from tornado import web
import task

class TestHandler(tornado.web.RequestHandler):

  @web.asynchronous
  def get(self):
    task.mytask0.apply_async(
      args=['task0'],
         queue='mytask0',
         routing_key='task.mytask0',
         callback=self.on_success)
  def on_success(self, result):
    self.finish({'task':result.result})

start.py

用于實(shí)現(xiàn)tornado服務(wù)的啟動(dòng)

#coding=utf-8
import tornado
from tornado.options import define, options, parse_command_line
from tornado.log import enable_pretty_logging
import tcelery
from app import TestHandler
import tornado.httpserver

define("port", default=8000, help="run on the given port", type=int)
define("debug", default=False, help="run in debug mode")

urls = [(r"/api/task/test", TestHandler)]

def server_start():
  app = tornado.web.Application(urls, debug=options.debug)
  enable_pretty_logging()
  parse_command_line()
  server = tornado.httpserver.HTTPServer(app)
  server.bind(options.port)
  server.start(2)
  tcelery.setup_nonblocking_producer(limit=2)
  tornado.ioloop.IOLoop.current().start()

if __name__ == "__main__":
  server_start()

執(zhí)行python start.py即可啟動(dòng)服務(wù)

以上這篇tornado+celery的簡(jiǎn)單使用詳解就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Python?sns.distplot()方法的使用方法

    Python?sns.distplot()方法的使用方法

    機(jī)器學(xué)習(xí)中經(jīng)常會(huì)用到圖形進(jìn)行可視化,如在網(wǎng)格搜索(GridSearch)后對(duì)特征的重要性進(jìn)行排序時(shí),用到sns.barplot()函數(shù)按照重要程度輸出特征,這篇文章主要給大家介紹了關(guān)于Python?sns.distplot()方法的使用方法,需要的朋友可以參考下
    2022-03-03
  • Python實(shí)現(xiàn)中文文本關(guān)鍵詞抽取的三種方法

    Python實(shí)現(xiàn)中文文本關(guān)鍵詞抽取的三種方法

    文本關(guān)鍵詞抽取,是對(duì)文本信息進(jìn)行高度凝練的一種有效手段,通過3-5個(gè)詞語(yǔ)準(zhǔn)確概括文本的主題,幫助讀者快速理解文本信息,本文分別采用TF-IDF方法、TextRank方法和Word2Vec詞聚類方法,利用Python語(yǔ)言進(jìn)行開發(fā),實(shí)現(xiàn)文本關(guān)鍵詞的抽取,需要的朋友可以參考下
    2024-01-01
  • 詳解K-means算法在Python中的實(shí)現(xiàn)

    詳解K-means算法在Python中的實(shí)現(xiàn)

    這篇文章主要介紹了詳解K-means算法在Python中的實(shí)現(xiàn),具有一定借鑒價(jià)值,需要的朋友可以了解下。
    2017-12-12
  • 使用PDB簡(jiǎn)單調(diào)試Python程序簡(jiǎn)明指南

    使用PDB簡(jiǎn)單調(diào)試Python程序簡(jiǎn)明指南

    這篇文章主要介紹了使用PDB簡(jiǎn)單調(diào)試Python程序簡(jiǎn)明指南,本文講解了使用PDB調(diào)試程序的簡(jiǎn)單技巧,方便、簡(jiǎn)潔實(shí)用,需要的朋友可以參考下
    2015-04-04
  • 使用Python實(shí)現(xiàn)圖像顏色量化的方法

    使用Python實(shí)現(xiàn)圖像顏色量化的方法

    這篇文章主要介紹了使用Python進(jìn)行圖像顏色量化,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-06-06
  • python的open函數(shù)使用案例代碼

    python的open函數(shù)使用案例代碼

    python打開文件使用open()函數(shù),返回一個(gè)指向文件的指針,在python中使用open函數(shù)對(duì)文件進(jìn)行處理,這篇文章主要介紹了python中的open函數(shù)使用,需要的朋友可以參考下
    2023-02-02
  • Django RBAC權(quán)限管理設(shè)計(jì)過程詳解

    Django RBAC權(quán)限管理設(shè)計(jì)過程詳解

    這篇文章主要介紹了Django RBAC權(quán)限管理設(shè)計(jì)過程詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-08-08
  • 對(duì)于Python深淺拷貝的理解

    對(duì)于Python深淺拷貝的理解

    這篇文章主要介紹了對(duì)于Python深淺拷貝的理解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-07-07
  • python不等于運(yùn)算符的具體使用

    python不等于運(yùn)算符的具體使用

    在Python語(yǔ)言中,用 != 表示不等于,本文主要介紹了python不等于運(yùn)算符的具體使用,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-12-12
  • python數(shù)組的復(fù)制與列表中的pop

    python數(shù)組的復(fù)制與列表中的pop

    這篇文章主要介紹了python數(shù)組的復(fù)制與列表中的pop,?Python?中復(fù)制數(shù)組有只需使用賦值運(yùn)算符、淺拷貝、深拷貝三種方法,下文詳細(xì)內(nèi)容需要的小伙伴可以參考一下
    2022-04-04

最新評(píng)論