Bài 2 Model trong django - Model in django

8th Jun 2021
Table of contents

Setup a simple celery task

Để chạy được Celery bạn cần setup Redis server hoặc RabbitMQ server. Và chắc chắn chúng đã được cài đặt

Với Redis server:

# simple/settings.py
REDIS_HOST = 'localhost'
REDIS_PORT = '6379'
BROKER_URL = 'redis://' + REDIS_HOST + ':' + REDIS_PORT + '/0'

Với RabbitMQ server:

# simple/settings.py

BROKER_URL = 'amqp://guest:guest@localhost:5672/' 
OK, tiếp theo mình tạo một file để define Celery  instance:

from __future__ import absolute_import, unicode_literals
import os
from celery import Celery

# set the default Django settings module for the 'celery' program.
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'simple.settings')

app = Celery('simple')

# 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 app configs.
app.autodiscover_tasks()

@app.task(bind=True)
def debug_task(self):
    print('Request: {0!r}'.format(self.request))

Sau đó, import task into simple/__init__.py

# simple/__init__.py
from __future__ import absolute_import, unicode_literals

# 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']

Tiếp theo, mình sẽ tạo một task print ra timenow mỗi lần load trang HelloWorld!. Mình tạo một file ce/task.py. Cấu trúc project looklike:

(venv) % tree
.
├── ce
│   ├── __init__.py
│   ├── __pycache__
│   │   ├── __init__.cpython-36.pyc
│   │   ├── admin.cpython-36.pyc
│   │   ├── models.cpython-36.pyc
│   │   ├── urls.cpython-36.pyc
│   │   └── views.cpython-36.pyc
│   ├── admin.py
│   ├── apps.py
│   ├── migrations
│   │   ├── __init__.py
│   │   └── __pycache__
│   │       └── __init__.cpython-36.pyc
│   ├── models.py
│   ├── taks.py
│   ├── tests.py
│   ├── urls.py
│   └── views.py
├── db.sqlite3
├── manage.py
└── simple
    ├── __init__.py
    ├── __pycache__
    │   ├── __init__.cpython-36.pyc
    │   ├── celery.cpython-36.pyc
    │   ├── settings.cpython-36.pyc
    │   ├── urls.cpython-36.pyc
    │   └── wsgi.cpython-36.pyc
    ├── celery.py
    ├── settings.py
    ├── urls.py
    └── wsgi.py

6 directories, 27 files


Add new comment

Image CAPTCHA
Enter the characters shown in the image.

Related Articles

Phần thú vị nhất đến rồi. Bây giờ để thực hiện các cộng việc mà bạn muốn làm khi gọi một command tương tự như Django thực hiện.

Các bạn đều đã cài đặt được Django nên mình sẽ không hướng dẫn lại nhé. Lưu ý nhỏ nữa là. Nếu mọi người trong đây về lâu về dài gắn bó với open source thì mình nghĩ linux sẽ là nơi lý tưởng cho các bạn