最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python3.8+django2+celery5.2.7環(huán)境準(zhǔn)備(python測(cè)試開(kāi)發(fā)django)

 更新時(shí)間:2022年07月19日 16:01:03   作者:上海-悠悠  
這篇文章主要介紹了python測(cè)試開(kāi)發(fā)django之python3.8+django2+celery5.2.7環(huán)境準(zhǔn)備工作,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

前言

以前版本的 Celery 需要一個(gè)單獨(dú)的庫(kù)(django-celery)來(lái)與 Django 一起工作,但從 3.1 開(kāi)始不再是這種情況。
現(xiàn)在支持開(kāi)箱即用的 Django,因此本文檔僅包含集成 Celery 和 Django 的基本方法.
celery5.x 不支持windows平臺(tái)了。Celery 5.0.x 支持 Django 1.11 LTS 或更新版本。

版本要求

Celery 5.2 版運(yùn)行于

  • Python?3.7、3.8、3.9、3.10?
  • PyPy3.7、3.8 ?7.3.7?

Celery 4.x 是支持 Python 2.7 的最后一個(gè)版本,
Celery 5.x 需要 Python 3.6 或更高版本。
Celery 5.1.x 還需要 Python 3.6 或更高版本。
Celery 5.2.x 需要 Python 3.7 或更新版本。

如果您運(yùn)行的是舊版本的 Python,則需要運(yùn)行舊版本的 Celery:

Python 2.7 或 Python 3.5:Celery 系列 4.4 或更早版本。
Python 2.6:Celery 系列 3.1 或更早版本。
Python 2.5:Celery 系列 3.0 或更早版本。
Python 2.4 是 Celery 系列 2.2 或更早版本。

Celery 是一個(gè)資金很少的項(xiàng)目,所以不支持 Microsoft Windows。請(qǐng)不要打開(kāi)與該平臺(tái)相關(guān)的任何問(wèn)題。

環(huán)境準(zhǔn)備

運(yùn)行系統(tǒng):linux(centos/debian/ubuntu),不支持windows
Python版本:3.8.5
Django : 2.2.2
celery: 5.2.7

使用pip安裝celery5.2.7版本

pip install celery==5.2.7

Django中使用Celery

要在 Django 項(xiàng)目中使用 Celery,您必須首先定義 Celery 庫(kù)的實(shí)例(稱為“應(yīng)用程序”)
如果你有一個(gè)現(xiàn)代的 Django 項(xiàng)目布局,比如:

- proj/
  - manage.py
  - proj/
    - __init__.py
    - settings.py
    - urls.py

那么推薦的方法是創(chuàng)建一個(gè)新的proj/proj/celery.py模塊來(lái)定義 Celery 實(shí)例:

proj/proj/celery.py 文件內(nèi)容

import os
from celery import Celery
# Set the default Django settings module for the 'celery' program.
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'proj.settings')
app = Celery('proj')
# Using a string here means the worker doesn't have to serialize
# the configuration object to child processes.
# - namespace='CELERY' means all celery-related configuration keys
#   should have a `CELERY_` prefix.
app.config_from_object('django.conf:settings', namespace='CELERY')
# Load task modules from all registered Django apps.
app.autodiscover_tasks()
@app.task(bind=True)
def debug_task(self):
    print(f'Request: {self.request!r}')

然后你需要在你的proj/proj/init.py 模塊中導(dǎo)入這個(gè)應(yīng)用程序。這可以確保在 Django 啟動(dòng)時(shí)加載應(yīng)用程序,以便@shared_task裝飾器(稍后提到)將使用它:

proj/proj/__init__.py內(nèi)容:

# This will make sure the app is always imported when
# Django starts so that shared_task will use this app.
from .celery import app as celery_app
__all__ = ('celery_app',)

請(qǐng)注意,此示例項(xiàng)目布局適用于較大的項(xiàng)目,對(duì)于簡(jiǎn)單的項(xiàng)目,您可以使用單個(gè)包含的模塊來(lái)定義應(yīng)用程序和任務(wù)

讓我們分解第一個(gè)模塊中發(fā)生的事情,首先,我們?cè)O(shè)置默認(rèn)值DJANGO_SETTINGS_MODULEcelery命令行程序的環(huán)境變量:

os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'proj.settings')

您不需要此行,但它使您不必總是將設(shè)置模塊傳遞給celery程序。它必須始終在創(chuàng)建應(yīng)用程序?qū)嵗俺霈F(xiàn),就像我們接下來(lái)要做的那樣:

app = Celery('proj')

這是我們的庫(kù)實(shí)例,您可以有很多實(shí)例,但在使用 Django 時(shí)可能沒(méi)有理由這樣做。

我們還將 Django 設(shè)置模塊添加為 Celery 的配置源。這意味著您不必使用多個(gè)配置文件,而是直接從 Django 設(shè)置中配置 Celery;但如果需要,您也可以將它們分開(kāi)。

app.config_from_object('django.conf:settings', namespace='CELERY')

大寫(xiě)命名空間意味著所有 Celery 配置選項(xiàng) 必須以大寫(xiě)而不是小寫(xiě)指定,并且以 開(kāi)頭 CELERY_,例如task_always_eager設(shè)置變?yōu)镃ELERY_TASK_ALWAYS_EAGER,broker_url 設(shè)置變?yōu)镃ELERY_BROKER_URL。這也適用于工作人員設(shè)置,例如,worker_concurrency 設(shè)置變?yōu)镃ELERY_WORKER_CONCURRENCY.

例如,一個(gè) Django 項(xiàng)目的配置文件可能包括:

...
# Celery Configuration Options
CELERY_TIMEZONE = "Australia/Tasmania"
CELERY_TASK_TRACK_STARTED = True
CELERY_TASK_TIME_LIMIT = 30 * 60

您可以直接傳遞設(shè)置對(duì)象,但使用字符串更好,因?yàn)檫@樣工作人員不必序列化對(duì)象。CELERY_命名空間也是可選的,但建議使用(以防止與其他 Django 設(shè)置重疊)。

接下來(lái),可重用應(yīng)用程序的一個(gè)常見(jiàn)做法是在單獨(dú)的tasks.py模塊中定義所有任務(wù),Celery 確實(shí)有一種方法可以自動(dòng)發(fā)現(xiàn)這些模塊:

app.autodiscover_tasks()

使用上面的代碼,Celery 將自動(dòng)從您安裝的所有應(yīng)用程序中發(fā)現(xiàn)任務(wù),遵循tasks.py約定:

- app1/
    - tasks.py
    - models.py
- app2/
    - tasks.py
    - models.py

這樣您就不必手動(dòng)將各個(gè)模塊添加到CELERY_IMPORTS設(shè)置中。

最后,該debug_task示例是一個(gè)轉(zhuǎn)儲(chǔ)自己的請(qǐng)求信息的任務(wù)。這是使用bind=True Celery 3.1 中引入的新任務(wù)選項(xiàng)來(lái)輕松引用當(dāng)前任務(wù)實(shí)例。

使用 @shared_task 裝飾器

您編寫(xiě)的任務(wù)可能會(huì)存在于可重用的應(yīng)用程序中,而可重用的應(yīng)用程序不能依賴于項(xiàng)目本身,因此您也不能直接導(dǎo)入您的應(yīng)用程序?qū)嵗?/p>

裝飾器允許您在@shared_task沒(méi)有任何具體應(yīng)用實(shí)例的情況下創(chuàng)建任務(wù):

demoapp/tasks.py:

# Create your tasks here
from demoapp.models import Widget
from celery import shared_task
@shared_task
def add(x, y):
    return x + y
@shared_task
def mul(x, y):
    return x * y
@shared_task
def xsum(numbers):
    return sum(numbers)
@shared_task
def count_widgets():
    return Widget.objects.count()
@shared_task
def rename_widget(widget_id, name):
    w = Widget.objects.get(id=widget_id)
    w.name = name
    w.save()

您可以在以下位置找到 Django 示例項(xiàng)目的完整源代碼: https ://github.com/celery/celery/tree/master/examples/django/

django-celery-results 保存結(jié)果

django-celery-results- 使用 Django ORM/Cache 作為結(jié)果后端
django-celery-results擴(kuò)展使用Django ORM 或 Django Cache 框架提供結(jié)果后端。

要將其用于您的項(xiàng)目,您需要執(zhí)行以下步驟:
1.安裝django-celery-results庫(kù):

 pip install django-celery-results

2.添加django_celery_results到INSTALLED_APPS您的 Django 項(xiàng)目中settings.py:

INSTALLED_APPS = (
    ...,
    'django_celery_results',
)

請(qǐng)注意,模塊名稱中沒(méi)有破折號(hào),只有下劃線。
3.通過(guò)執(zhí)行數(shù)據(jù)庫(kù)遷移來(lái)創(chuàng)建 Celery 數(shù)據(jù)庫(kù)表:

 python manage.py migrate django_celery_results

4.配置 Celery 以使用django-celery-results后端。
假設(shè)您使用 Djangosettings.py來(lái)配置 Celery,添加以下設(shè)置

CELERY_RESULT_BACKEND = 'django-db'

對(duì)于緩存后端,您可以使用:

CELERY_CACHE_BACKEND = 'django-cache'

我們也可以使用 django 的 CACHES 設(shè)置中定義的緩存。

# celery setting.
CELERY_CACHE_BACKEND = 'default'

# django setting.
CACHES = {
    'default': {
        'BACKEND': 'django.core.cache.backends.db.DatabaseCache',
        'LOCATION': 'my_cache_table',
    }
}

有關(guān)其他配置選項(xiàng),請(qǐng)查看 任務(wù)結(jié)果后端https://docs.celeryq.dev/en/stable/userguide/configuration.html#conf-result-backend設(shè)置參考。

django-celery-beat 定時(shí)任務(wù)

django-celery-beat- 具有管理界面的數(shù)據(jù)庫(kù)支持的定期任務(wù)。 詳細(xì)資料參考https://docs.celeryq.dev/en/stable/userguide/periodic-tasks.html#beat-custom-schedulers

啟動(dòng)工作進(jìn)程

在生產(chǎn)環(huán)境中,您將希望在后臺(tái)將工作程序作為守護(hù)程序運(yùn)行 - 請(qǐng)參閱守護(hù)程序-但對(duì)于測(cè)試和開(kāi)發(fā),能夠使用 celery worker manage 命令啟動(dòng)工作程序?qū)嵗苡杏?,就像您一樣d 使用 Django 的 manage.py runserver:

celery -A proj worker -l INFO

有關(guān)可用命令行選項(xiàng)的完整列表,請(qǐng)使用幫助命令:

 celery help

到此這篇關(guān)于python3.8+django2+celery5.2.7環(huán)境準(zhǔn)備的文章就介紹到這了,更多相關(guān)python3.8+django2+celery5.2.7環(huán)境內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python安裝Gradio和常見(jiàn)安裝問(wèn)題解決辦法

    Python安裝Gradio和常見(jiàn)安裝問(wèn)題解決辦法

    Gradio是一款便捷的Python庫(kù),專門用于創(chuàng)建機(jī)器學(xué)習(xí)模型的Web應(yīng)用,安裝通常簡(jiǎn)單,但偶爾會(huì)遇到依賴問(wèn)題或環(huán)境配置錯(cuò)誤,這篇文章主要介紹了Python安裝Gradio和常見(jiàn)安裝問(wèn)題解決辦法,需要的朋友可以參考下
    2024-10-10
  • pygame實(shí)現(xiàn)成語(yǔ)填空游戲

    pygame實(shí)現(xiàn)成語(yǔ)填空游戲

    這篇文章主要介紹了pygame實(shí)現(xiàn)成語(yǔ)填空游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-10-10
  • Python Flask基礎(chǔ)教程示例代碼

    Python Flask基礎(chǔ)教程示例代碼

    這篇文章主要介紹了Python Flask基礎(chǔ)教程示例代碼,分享了相關(guān)代碼示例,小編覺(jué)得還是挺不錯(cuò)的,具有一定借鑒價(jià)值,需要的朋友可以參考下
    2018-02-02
  • Python+SeaTable實(shí)現(xiàn)計(jì)算兩個(gè)日期間的工作日天數(shù)

    Python+SeaTable實(shí)現(xiàn)計(jì)算兩個(gè)日期間的工作日天數(shù)

    在實(shí)際的項(xiàng)目管理、任務(wù)管理、工作計(jì)劃等場(chǎng)景中,某些時(shí)間段會(huì)涉及雙休日、法定節(jié)假日,甚至還有公司自定義的工作時(shí)間安排,所以就需要計(jì)算出兩個(gè)日期間的實(shí)際工作日天數(shù)。本文用Python+SeaTable實(shí)現(xiàn)這一需求,需要的可以參考一下
    2022-07-07
  • 使用Pygal庫(kù)創(chuàng)建可縮放的矢量圖表的操作方法

    使用Pygal庫(kù)創(chuàng)建可縮放的矢量圖表的操作方法

    在本文中,我們探討了如何使用Pygal庫(kù)創(chuàng)建可縮放的矢量圖表,首先,我們介紹了Pygal的基本概念和安裝方法,然后通過(guò)多個(gè)示例演示了如何創(chuàng)建各種類型的圖表,包括折線圖、柱狀圖、餅圖、散點(diǎn)圖、雷達(dá)圖和地圖等,需要的朋友可以參考下
    2024-05-05
  • 分享Python?加速運(yùn)行技巧

    分享Python?加速運(yùn)行技巧

    這篇文章主要介紹了分享Python?加速運(yùn)行技巧,Python?是一種腳本語(yǔ)言,相比?C/C++?這樣的編譯語(yǔ)言,在效率和性能方面存在一些不足,本文對(duì)一些?Python?代碼加速運(yùn)行的技巧進(jìn)行整,需要的小伙伴可以參考一下
    2022-03-03
  • python實(shí)現(xiàn)emoji對(duì)齊特殊字符對(duì)齊高級(jí)文本對(duì)齊

    python實(shí)現(xiàn)emoji對(duì)齊特殊字符對(duì)齊高級(jí)文本對(duì)齊

    這篇文章主要為大家介紹了python實(shí)現(xiàn)emoji對(duì)齊特殊字符對(duì)齊高級(jí)文本對(duì)齊方法實(shí)例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-11-11
  • python繪制分布折線圖的示例

    python繪制分布折線圖的示例

    這篇文章主要介紹了python繪制分布折線圖的示例代碼,幫助大家更好的利用python繪制圖像,感興趣的朋友可以了解下
    2020-09-09
  • pytorch 常用線性函數(shù)詳解

    pytorch 常用線性函數(shù)詳解

    今天小編就為大家分享一篇pytorch 常用線性函數(shù)詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-01-01
  • 解決ModuleNotFoundError: No module named ‘flask._compat的問(wèn)題

    解決ModuleNotFoundError: No module named ‘

    這篇文章主要介紹了解決ModuleNotFoundError: No module named ‘flask._compat的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-06-06

最新評(píng)論

马公市| 玛沁县| 百色市| 柏乡县| 灵武市| 永吉县| 石狮市| 叶城县| 贵南县| 防城港市| 邵武市| 河东区| 沐川县| 巴林右旗| 华阴市| 阿克苏市| 九龙城区| 江北区| 嘉黎县| 永福县| 崇礼县| 娄烦县| 石泉县| 绵竹市| 甘德县| 雅安市| 佛山市| 沙湾县| 霍林郭勒市| 莱阳市| 通化市| 门头沟区| 鲁甸县| 天峻县| 独山县| 舒城县| 南投市| 尉氏县| 茶陵县| 凤阳县| 封开县|