在Ubuntu的Python上安装Celery

在Ubuntu上安装Python并安装Celery的步骤。

连接到外部服务器并启动工作程序以获取消息。

开发环境

Ubuntu 20.04.2 LTS: Ubuntu 20.04.2 LTS 软件版本
Python 3.8.10: Python 3.8.10 版本
Django 3.2.7: Django 3.2.7 版本
redis 3.5.3: redis 3.5.3 版本

确认是否安装

ubuntu@tk2-248-33993:/var $ sudo pip freeze
...何かしら色々リストがでる。その中でバージョンが書かれていればOK
celery==5.1.2
Django==3.2.7
redis==3.5.3

如果不存在的话,进行安装。

使用pip3安装django
使用pip3安装celery
使用pip3安装redis

在变量var下创建一个名为www的目录。

ubuntu@tk2-248-33993:/var $ sudo mkdir www

在 www 目录下创建一个名为 django_app 的文件夹。

ubuntu@tk2:/var/www $ sudo mkdir django_app

前往 Django 应用程序(通用)

ubuntu@tk2:/var/www $ cd django_app

创建项目(通用)

ubuntu@tk2:/var/www/django_app $ sudo django-admin startproject celery_tutorial

进入创建的celery_tutorial文件夹 (通用)

ubuntu@tk2:/var/www/django_app $ cd celery_tutorial/

迁移 (通用)

ubuntu@tk2:/var/www/django_app/celery_tutorial $ sudo python3 manage.py migrate

前往“celery_tutorial”(共享)。

ubuntu@tk2:/var/www/django_app/celery_tutorial $ cd celery_tutorial/

创建 celery.py 文件 (共同)

ubuntu@tk2:/var/www/django_app/celery_tutorial/celery_tutorial $ sudo vi celery.py

将以下内容写入 celery.py 文件(通用)

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', 'celery_tutorial.settings')

app = Celery('celery_tutorial')

# 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()

打开setting.py文件(工作方)

ubuntu@tk2-248-33993:/var/www/django_app/celery_tutorial/celery_tutorial $ sudo vi settings.py

在(Worker)一侧添加想要连接的目标IP地址。

sudo vi /var/www/django_app/celery_tutorial/celery_tutorial/settings.py
CELERY_BROKER_URL = 'redis://1xx.1xx.2xx.2xx:6379'

在连接到的IP地址上追加信息(代理端)

sudo vi /var/www/django_app/celery_tutorial/celery_tutorial/settings.py
CELERY_BROKER_URL = ['*']

打开 init.py(通用)

ubuntu@tk2-248-33993:/var/www/django_app/celery_tutorial/celery_tutorial $ sudo vi __init__.py

在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',)

在celery.py文件中进行添加(Worker侧)

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', 'celery_tutorial.settings')

app = Celery('celery_tutorial')

# 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
def debug_task(x, y):
    print('wwwww')
    return x + y
##追加ここまで###

将”/etc/redis/redis.conf”文件进行修改,使其可以进行外部连接(在broker端)。

#bind 127.0.0.1 -::1
bind 0.0.0.0

如果修改了redis.conf文件,需要重新启动redis(Broker端)。

mention: This is a paraphrased translation in Chinese.

ubuntu@tk2-248-33993:/var/www/django_app/celery_tutorial/celery_tutorial $ sudo systemctl status redis
广告
将在 10 秒后关闭
bannerAds