UbuntuのPythonにCeleryをインストール

#UbuntuにインストールしたPythonにCeleryをインストールする手順

##外部サーバに接続してワーカーを起動させメッセージを取得する


####開発環境
Ubuntu 20.04.2 LTS
Python 3.8.10
Django 3.2.7
redis 3.5.3

<br>
####インストールされているかの確認

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

####存在しない場合は、インストールすること
pip3 install django
pip3 install celery
pip3 install redis




####varの下にwwwディレクトリを作成する　(共通)

```
ubuntu@tk2-248-33993:/var $ sudo mkdir www
```
<br>
####www の下に　django_appディレクトリを作成する　(共通)

```
ubuntu@tk2:/var/www $ sudo mkdir django_app
```
<br>

####django_app　に移動　(共通)

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

<br>
####プロジェクトの作成　(共通)

```
ubuntu@tk2:/var/www/django_app $ sudo django-admin startproject celery_tutorial
```
<br>
####作成されたcelery_tutorialに移動　(共通)

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

<br>
####migrateする　(共通)

```
ubuntu@tk2:/var/www/django_app/celery_tutorial $ sudo python3 manage.py migrate
```
<br>
####celery_tutorial に移動する　(共通)

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

<br>
####celery.py　ファイルを作成　(共通)

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

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

<br>
####setting.pyを開く(Worker側)

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

<br>
####接続したい先のIPアドレスを追記する(Worker側)

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

<br>
####接続したい先のIPアドレスを追記する(Broker側)

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



<br>
####__init__.pyを開く (共通)

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

<br>
####__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
##追加ここまで###
```
<br>
####/etc/redis/redis.confの変更  外部接続できるようにする(Broker側)

```
#bind 127.0.0.1 -::1
bind 0.0.0.0
```

<br>
####redis.conf を書替えたら、redisを再起動(Broker側)

```
ubuntu@tk2-248-33993:/var/www/django_app/celery_tutorial/celery_tutorial $ sudo systemctl status redis
```