日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Celery中文翻译-Application

發布時間:2025/5/22 编程问答 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Celery中文翻译-Application 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Celery在使用前必須實例化,稱為application或app。app是線程安全的,具有不同配置、組件、task的多個Celery應用可以在同一個進程空間共存。

# 創建Celery應用 >>> from celery import Celery >>> app = Celery() >>> app <Celery __main__:0x100469fd0>

最后一行文本化顯示了Celery應用:包含應用所屬類的名稱,當前主模塊名,以及內存地址。唯一重要的信息是模塊名稱。

Main Name

在Celery中發送task消息時,該消息僅包含要執行的task的名稱。每一個worker維護一個task名稱和對應函數的映射,這稱為task registry。

當定義一個task時,該task將注冊到本地:

>>> @app.task ... def add(x, y): ... return x + y>>> add <@task: __main__.add>>>> add.name __main__.add>>> app.tasks['__main__.add'] <@task: __main__.add>

當Celery無法檢測task函數屬于哪個模塊時,使用main模塊名生成初始task名稱。

這種方式僅適用于以下兩種場景:

  • 定義task的模塊作為程序運行
  • app在python shell中創建
  • # tasks.py from celery import Celery app = Celery()@app.task def add(x, y): return x + yif __name__ == '__main__':app.worker_main()

    如果直接運行tasks.py,task名將以__main__為前綴,但如果tasks.py被其他程序導入,task名將以tasks為前綴。如下:

    >>> from tasks import add >>> add.name tasks.add

    也可以直接指定主模塊名:

    >>> app = Celery('tasks') >>> app.main 'tasks'>>> @app.task ... def add(x, y): ... return x + y>>> add.name tasks.add

    Configuration

    可以通過直接設置,或使用專用配置模塊對Celery進行配置。

    通過app.conf屬性查看或直接設置配置:

    >>> app.conf.timezone 'Europe/London'>>> app.conf.enable_utc = True

    或用app.conf.update方法一次更新多個配置:

    >>> app.conf.update( ... enable_utc=True, ... timezone='Europe/London', ...)

    config_from_object

    app.config_from_object()方法從配置模塊或對象中導入配置。需要注意的是:調用config_from_object()方法將重置在這之前配置的任何設置。

    使用模塊名
    app.config_from_object()方法接收python模塊的完全限定名(fully qualified name)或具體到其中的某個屬性名,例如"celeryconfig", "myproj.config.celery", 或"myproj.config:CeleryConfig":

    from celery import Celeryapp = Celery() app.config_from_object('celeryconfig')

    只要能夠正常執行import celeryconfig,app就能正常配置。

    使用模塊對象
    也可以傳入一個已導入的模塊對象,但不建議這樣做。

    import celeryconfigfrom celery import Celeryapp = Celery() app.config_from_object(celeryconfig)

    更推薦使用模塊名的方式,因為這樣在使用prefork pool時不需要序列化該模塊。如果在實際應用中出現配置問題或序列化錯誤,請嘗試使用模塊名的方式。

    使用配置類或對象

    from celery import Celeryapp = Celery()class Config:enable_utc = Truetimezone = 'Europe/London'app.config_from_object(Config)

    config_from_envvar

    app.config_from_envvar()方法從環境變量中接收配置模塊名。

    import os from celery import Celery#: Set default configuration module name os.environ.setdefault('CELERY_CONFIG_MODULE', 'celeryconfig')app = Celery() app.config_from_envvar('CELERY_CONFIG_MODULE')

    通過環境變量指定配置模塊:

    $ CELERY_CONFIG_MODULE="celeryconfig.prod" celery worker -l info

    Censored configuration

    如果要顯示Celery配置,可能需要過濾某些敏感信息如密碼、密鑰等。Celery提供了幾種用于幫助顯示配置的實用方法。

    humanize()
    該方法返回列表字符串形式的配置,默認只包含改動過的配置,如果要顯示內置的默認配置,設置with_defaults參數為True:

    >>> app.conf.humanize(with_defaults=False, censored=True)

    table()
    該方法返回字典形式的配置:

    >>> app.conf.table(with_defaults=False, censored=True)

    Celery可能不會移除所有的敏感信息,因為它使用正則表達式匹配鍵并判斷是否移除。如果用戶添加了包含敏感信息的自定義配置,可以使用Celery可能標記為敏感配置的名稱來命名(API, TOKEN, KEY, SECRET, PASS, SIGNATURE, DATABASE)。

    Laziness

    應用實例是惰性的。

    創建Celery實例只會執行以下操作:

  • 創建用于event的logical clock instance
  • 創建task registry
  • 設置為當前應用(除非禁用了set_as_current參數)
  • 調用app.on_init()回調函數(默認不執行任何操作)
  • app.task()裝飾器不會在task定義時立即創建task,而是在task使用時或finalized應用后創建。

    下例說明了在使用task或訪問其屬性前,都不會創建task:

    >>> @app.task >>> def add(x, y): ... return x + y>>> type(add) <class 'celery.local.PromiseProxy'>>>> add.__evaluated__() False>>> add # <-- causes repr(add) to happen <@task: __main__.add>>>> add.__evaluated__() True

    應用的Finalization指顯式地調用app.finalize()方法或隱式地訪問app.tasks屬性。

    finalized應用將會:

  • 復制必須在應用間共享的task。task默認是共享的,但如果禁用了task裝飾器的shared屬性,將屬于應用私有。
  • 評估所有待處理的task裝飾器
  • 確保所有task綁定到當前應用。將task綁定到某個應用,以便可以從配置中讀取默認值。
  • Breaking the chain

    雖然可以依賴于當前應用,但最佳實踐是將應用實例傳遞給任何需要它的對象,這個行為可以稱為app chain。

    # 依賴于當前應用(bad)from celery import current_appclass Scheduler(object):def run(self):app = current_app # 傳遞應用實例(good)class Scheduler(object):def __init__(self, app):self.app = app

    在開發模式設置CELERY_TRACE_APP環境變量,可以在應用鏈斷開時拋出異常:

    $ CELERY_TRACE_APP=1 celery worker -l info

    Abstract Tasks

    使用task()裝飾器創建的task都繼承自celery.app.task模塊的Task基類。繼承該類可以自定義task類:

    from celery import Task # 或者 from celery.app.task import Taskclass DebugTask(Task):def __call__(self, *args, **kwargs):print('TASK STARTING: {0.name}[{0.request.id}]'.format(self))return super(DebugTask, self).__call__(*args, **kwargs)

    如果要重寫__call__()方法,記得調用super。這樣在task直接調用時會執行基類的默認事件。

    Task基類是特殊的,因為它并未綁定到任何特定的應用。一旦task綁定到應用,它將讀取配置以設置默認值等。

  • 通過base參數指定基類

    @app.task(base=DebugTask) def add(x, y):return x + y
  • 通過app.Task屬性指定基類

    >>> from celery import Celery, Task>>> app = Celery()>>> class MyBaseTask(Task): ... queue = 'hipri'>>> app.Task = MyBaseTask >>> app.Task <unbound MyBaseTask>>>> @app.task ... def add(x, y): ... return x + y>>> add <@task: __main__.add>>>> add.__class__.mro() [<class add of <Celery __main__:0x1012b4410>>,<unbound MyBaseTask>,<unbound Task>,<type 'object'>]
  • 《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀

    總結

    以上是生活随笔為你收集整理的Celery中文翻译-Application的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 日韩av一区二区三区在线观看 | 横恋母在线观看 | 亚洲色图婷婷 | 超碰人人网 | 成人黄色激情网 | 欧美人体一区二区三区 | 人妻无码一区二区三区免费 | 中文字幕女同女同女同 | 国产在线观看xxx | 国产精品免费在线 | 无码人妻一区二区三区免费n鬼沢 | 激情网av| 午夜中出| 韩漫动漫免费大全在线观看 | 欧美国产日韩精品 | 国产精品亚洲精品 | 中文写幕一区二区三区免费观成熟 | 一区二区视 | 日本精品在线 | 日韩91视频 | 午夜伦伦电影理论片费看 | 与子敌伦刺激对白播放的优点 | 成年女人毛片 | 日产精品久久久久久久 | 一区二区少妇 | 国产18禁黄网站免费观看 | 久一在线视频 | 啪一啪在线| 中文字幕在线导航 | 久久网免费视频 | 91啪国产在线 | 久久综合伊人77777麻豆最新章节 | 蜜臀久久99精品久久久久久 | 国产原创在线 | 中文天堂在线视频 | 久久精品国产亚洲av麻豆色欲 | 亚洲黄色在线网站 | 国产欧美一区二区精品忘忧草 | 熟女自拍一区 | 久久精品伊人 | 成人做爰视频www | 丝袜美腿亚洲综合 | 欧美成人一级视频 | 国产一区在线观看免费 | 小日子的在线观看免费第8集 | 久久精品66 | 亚洲av无码一区二区三区在线 | 人人妻人人爽欧美成人一区 | 国产精品xxx在线 | 欧美日韩精选 | 亲子乱aⅴ一区二区三区 | 最全aⅴ番号库网 | 欧美黄色一区 | 男女视频免费看 | 国产精品资源站 | 日本va在线 | 浪浪视频污| 亚洲视频一区二区三区四区 | 国产精品一区在线看 | 日韩精品一区二区三区国语自制 | 日韩人成 | 体内射精一区二区 | 欧美日韩在线免费观看 | 爱上av| 男女互插视频 | 国产成人精品一区二区无码呦 | 欧美视频在线观看免费 | 久久网站av | 黑人粗进入欧美aaaaa | 色噜噜视频 | 中国少妇初尝黑人巨大 | 亚洲无吗一区二区三区 | 97av在线播放 | 国产精品欧美性爱 | 青青青草视频在线 | 91华人在线| 特种兵之深入敌后 | 邻居校草天天肉我h1v1 | 精品亚洲天堂 | 91在线欧美 | 日韩成人久久 | 日韩在线视频看看 | 黑人操欧美人 | 亚洲精品一区三区三区在线观看 | 欧洲自拍一区 | 99久久亚洲精品日本无码 | 欧美黄色一区二区 | 午夜网页 | 免费看特级毛片 | 狠狠干伊人网 | 国产精品一二三四 | 91精品亚洲一区 | 久久黄色 | 九月婷婷色 | 日本一区视频在线 | 可以在线观看av的网站 | 国产精品久久久久久亚洲毛片 | 欧美日韩性视频 | 免费色视频 |