<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                # celery * [官方網站](http://www.celeryproject.org/) * [中文文檔](http://docs.jinkan.org/docs/celery/) * 示例一:用戶發起request,并等待response返回。在本些views中,可能需要執行一段耗時的程序,那么用戶就會等待很長時間,造成不好的用戶體驗 * 示例二:網站每小時需要同步一次天氣預報信息,但是http是請求觸發的,難道要一小時請求一次嗎? * 使用celery后,情況就不一樣了 * 示例一的解決:將耗時的程序放到celery中執行 * 示例二的解決:使用celery定時執行 ## 名詞 * 任務task:就是一個python函數 * 隊列queue:將需要執行的任務加入到隊列中 * 人工worker:在一個新進程中,扶著執行隊列中的任務 * 代理broker:負責調度,在布置環境中使用redis ## 使用 * 安裝包 ```text pip install celery pip install django-celery pip install celery-with-redis ``` * 配置settings.py ```text # Application definition INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'myapp', 'tinymce', 'haystack', 'djcelery', ] ``` ```text # celery import djcelery djcelery.setup_loader() # 初始化隊列 BROKER_URL = 'redis://localhost:6379/0' # 有密碼 # BROKER_URL = 'redis://:123456@127.0.0.1:6379/0' CELERY_IMPORTS = ('myapp.task') # CELERY_IMPORTS = ('應用名稱.task') ``` * 在應用目錄下創建task.py文件 ```text import time from celery import task,shared_task # 模擬一個耗時操作 @task def timeTestOne(): print("test1") time.sleep(10) print("test2") @shared_task def longtimeTest(n): time.sleep(n) ``` * 遷移,生成celery需要的數據表 ```text python manage.py migrate ``` * 啟動Redis ```text net start redis ``` * 啟動worker ```text python manage.py celery worker --loglevel=info ``` * 調用語法 ```text function.delay(parameters) ``` * 代碼 ```text import time from .task import * def celeryOne(request): print("angle") # time.sleep(3) longtimeTest.delay(1000) print("angle") return HttpResponse("成功") ``` * 使用delay\(\*arg,\*\*kwarg\)方法執行耗時的方法或者操作,并能傳遞參數值
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看