Ich benutze Flask-SQLAlchemy, Sellerie und uWSGI.PostgreSQL-Verbindungen in Sellerie-Task für Flask-SQLAlchemy und Sellerie richtig verwalten
Ich weiß, dass Flask-SQLAlchemy automatisch die Sitzung für Sie verwaltet. Ich bin nicht sicher, wie das mit Sellery-Arbeitern funktioniert, aber es scheint, dass wenn ich eine Aufgabe ein zweites Mal ausführe, bekomme ich den folgenden Fehler: DatabaseError: (psycopg2.DatabaseError) Server schloss die Verbindung unerwartet.
Hier ist, wie ich die App Kontext und Sellerie Aufgaben erstellen:
def make_celery(app):
celery = Celery(
app.import_name,
backend=app.config['CELERY_BACKEND'],
broker=app.config['CELERY_BROKER_URL'],
)
celery.conf.update(app.config)
TaskBase = celery.Task
class ContextTask(TaskBase):
abstract = True
def __call__(self, *args, **kwargs):
with app.app_context():
return TaskBase.__call__(self, *args, **kwargs)
celery.Task = ContextTask
return celery
Es scheint, dass vielleicht die Arbeiter die gleiche Datenbank-Verbindung verwenden und nach einer Aufgabe abgeschlossen ist, dass die Verbindung nicht wieder aufgefüllt wird?
Es kann sich auf die following question beziehen?
Ich bin nicht sicher, wie Setup richtig, die Arbeiter oder Sellerie, so dass sie neue Verbindungen zur Datenbank verwenden sind ..