2016-12-24 5 views
4

Ich habe erfolgreich gelernt, einige Grundlagen der Sellerie, aber ich habe keine einfache Möglichkeit, einzelne Datei ausführbar zu erstellen (ohne Notwendigkeit, Selleriebeat als separaten Prozess zu regelmäßigen ausführen zu finden Aufgaben). Es ist möglich, eine App und starten Sie ihren Arbeitsprozess (http://docs.celeryproject.org/en/3.1/userguide/application.html) zu schreiben:So erstellen Sie eine einzelne Datei ausführbar mit Sellerie Aufgaben

from datetime import timedelta 
from celery import Celery 
app = Celery() 

@app.task 
def test(): 
    print("he-he") 

app.conf.update(
    BROKER_URL="redis://localhost:6379", 
    CELERY_RESULT_BACKEND="redis://localhost:6379", 
    CELERY_ACCEPT_CONTENT=["application/json"], 
    CELERY_TASK_SERIALIZER="json", 
    CELERY_RESULT_SERIALIZER="json", 
    CELERYBEAT_SCHEDULE={ 
     'runs-every-30-seconds': { 
      'task': '__main__.test', 
      'schedule': timedelta(seconds=30), 
     }, 
    } 
) 

if __name__ == '__main__': 
    app.worker_main() 

Aber wie kann ich den Beat-Prozess aus dem gleichen Modul starten runnning periodische Aufgaben zu starten (um nicht celerybeat Daemon als zu laufen separate ausführbare Datei)? Es ist wichtig, weil ich pyinstaller verwenden möchte, also ist kein dedizierter Python-Interpreter auf Client-Rechnern verfügbar.

Vielen Dank im Voraus! Und ich wünsche Ihnen frohe Weihnachten und ein gutes neues Jahr!

Antwort

0

Nun, Leute, diese Aufgabe ist nicht so schwer wie ich es vermutete. Eine kleine Recherche hat mir erlaubt, die Antwort zu finden.

Man kann so einfach Beat Prozess laufen erstellen:

# that's the class to run the beat process 
from celery.bin.beat import beat 
# your app 
from celery_tasks import app 

if __name__ == "__main__": 
    beat(app=app).run() 

Vielen Dank!

Verwandte Themen