2016-12-24 20 views
4

セロリの基本をうまく学んだことがありますが、実行可能なファイルを1つ作成する簡単な方法は見つけられませんでした(定期的に実行する別個のプロセスとしてcelerybeatを実行する必要はありませんタスク)。どのように私はとしてcelerybeatデーモンを実行しないようにするために(定期的なタスクを走っ開始するには、同じモジュールからのビート・プロセスを開始することができますセロリのタスクで実行可能な単一のファイルを作成する方法

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() 

しかし:アプリを書いて、そのワーカープロセス(http://docs.celeryproject.org/en/3.1/userguide/application.html)を開始することが可能です別の実行可能ファイル)? Pyinstallerを使用したいので重要です。クライアントマシンでは専用のPythonインタプリタを使用できません。

ありがとうございます! そして、私はあなたにメリークリスマスと新年あけましておめでとう!

答えて

0

さて、みんな、この仕事は私が想定しているほど難しくありません。小規模な研究によって私は答えを見つけることができました。

一つは、そのような単純なビート・プロセスを作成、実行することができます

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

ありがとうございました!

関連する問題