Anwendungskontext Fehler in Flask App mit Sellerie in Docker

stimmen
0

Ich versuche, Flasche und Sellerie in Docker zu verwenden und habe Probleme mit der Flasche Anwendungskontext.

Flask == 1.0.2 Sellerie == 4.2.0 Flask-CeleryExt == 0.3.1

Hier sind einige relevante Code.

Docker-compose.yaml

version: '3'

services:
  myapp:
    build:
      context: .
      dockerfile: compose/dev/myapp/Dockerfile
    ports:
      - '5000:5000'
      - '8888:8888'
    env_file: .env
    environment:
      - FLASK_ENV=development
    volumes:
      - .:/myapp
    entrypoint: /wait-for-postgres.sh
    command: flask run --host=0.0.0.0
    depends_on:
      - postgres
      - redis
    networks:
      - flask-redis-celery

  celery:
    build:
      context: .
      dockerfile: compose/dev/celery/Dockerfile
    command: 'celery -A myapp.tasks worker -Q default --loglevel=info'
    env_file: .env
    volumes:
      - .:/myapp
    depends_on:
      - redis
      - myapp
    networks:
      - flask-redis-celery

extensions.py

from flask_celeryext import FlaskCeleryExt
ext = FlaskCeleryExt()

app.py in einer register_extensionsFunktion. Ich verwende die Anwendung Fabrik Muster in meiner app.

ext.init_app(app)

Im Inneren des myappBehälters, kann ich bekommen ext.celerypro der Dokumentation und sehen , dass ich eine Sellerie - Instanz haben und richtig eine Aufgabe senden

<Celery default at 0x7f600d0e7f98>

Allerdings versuchen , das gleiche in dem Sellerie Behälter in meiner zu tun tasksDatei Ergebnisse in ext.celeryNone zu sein.

tasks.py

from coupon.extensions import ext
celery = ext.celery # This is None

@celery.task(name='tasks.my_task', max_retries=2, default_retry_delay=60)
def my_task(some_args):
    # etc.

Error

AttributeError: 'NoneType' object has no attribute 'task'

Ich habe zahlreiche andere Möglichkeiten versucht auch mit , make_celerywie in den genannten Fläschchen docs , kann aber nicht auf Flasche und meine Modelle in den Sellerie Container zu bekommen, so glaube nicht , dass dies zu Flask-CeleryExt sehr spezifisch ist.

Ich kann Sellerie Aufgaben funktionieren machen, wenn sie nicht Flask-Objekte zugreifen, aber ich muß SQLAlchemy Modelle und benutzerdefinierte Klassen von meiner Sellerie Aufgabe zugreifen.

Wie kann ich Sellerie Arbeit richtig in meinem Sellerie Behälter und der Lage sein, den Zugriff auf Flask Objekte machen?

Veröffentlicht am 27/11/2018 um 17:58
quelle vom benutzer
In anderen Sprachen...                            

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more