Python-Aipo no Windows com o gerenciamento do Docker

Para depurar ' adequadamente ' o Celery no Windows, existem várias maneiras, como:

> celery worker --app=demo_app.core --pool=solo --loglevel=INFO

Mas, de fato, para o desenvolvimento normal, você precisa de um sistema Unix. Se você não tem a oportunidade de usá-lo como nativo, vale a pena considerar ...) Bem, para ser honesto, sempre há uma saída e esse é o Docker, assim como a WSL. Se você usar IDEs "legais" como o PyCharm, tudo ficará mais complicado, porque ao usar o intérprete com uma fonte da WSL, depois de instalar o pacote através do pip, você precisará atualizar manualmente o esqueleto do projeto devido a problemas de indexação.

Mas com o Docker, tudo é diferente. Para um gerenciamento legal, precisaremos do Windows 10 Pro, pois a versão Home não suporta virtualização.

Agora instale e teste o Docker . Depois que isso acontecer na bandeja, o ícone correspondente aparecerá.

imagem

Em seguida, criamos e executamos o projeto no Django. Aqui estou usando a versão 2.2. Haverá uma estrutura semelhante a esta:

imagem

Depois de instalarmos o Aipo e o Redis como corretor.

Agora adicione algum código para verificar:

# core/settings.py 
CELERY_BROKER_URL = 'redis://demo_app_redis:6379'
CELERY_ACCEPT_CONTENT = ['json'] 
CELERY_TASK_SERIALIZER = 'json'

# core/celery.py
from __future__ import absolute_import, unicode_literals
import os
from celery import Celery

os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'core.settings')
app = Celery('core')
app.config_from_object('django.conf:settings', namespace='CELERY')
app.autodiscover_tasks()

# core/__init__.py
from __future__ import absolute_import, unicode_literals
from .celery import app as celery_app

__all__ = ('celery_app',)

Adicione um novo aplicativo django no qual nossas tarefas serão e adicione um novo arquivo:

# app/tasks.py
from celery.task import periodic_task
from datetime import timedelta

@periodic_task(run_every=(timedelta(seconds=5)), name='hello')
def hello():
    print("Hello there")

Em seguida, crie um Dockerfile e docker-compose.yml na raiz do projeto:

# Dockerfile
FROM python:3.7
RUN pip install pipenv
RUN mkdir /code
WORKDIR /code
COPY Pipfile* /code/
RUN pipenv install --system --deploy --ignore-pipfile
ADD core /code/

# docker-compose.yml
version: '3'

services:
  redis:
    image: redis
    restart: always
    container_name: 'demo_app_redis'
    command: redis-server
    ports:
      - '6379:6379'
  web:
    build: .
    restart: always
    container_name: 'demo_app_django'
    command: python manage.py runserver 0.0.0.0:8000
    volumes:
      - .:/code
    ports:
      - '8000:8000'
  celery:
    build: .
    container_name: 'demo_app_celery'
    command: celery -A core worker -B
    volumes:
      - .:/code
    links:
      - redis
    depends_on:
      - web
      - redis

E comece!

imagem

Estamos aguardando a instalação de todas as dependências no ambiente de pipenv. No final, você deve ver algo assim:

imagem

Isso significa que tudo é legal ! Você pode controlar a partir da linha de comando:

imagem

imagem

Como você pode ver, duas imagens criadas a partir de um Dockerfile têm um ID.

Mas você também pode gerenciar contêineres usando a GUI:

imagem

imagem

Dessa forma, você pode facilmente ligar / desligar, reiniciar e excluir o contêiner.

imagem

All Articles