在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