2012-01-03 8 views
10

ここでは奇妙な問題があります。私はDjangoアプリケーションを開発しており、現在はセロリを実装しようとしています。私は、通常のタスクと定期的なタスクの両方をキューに入れる必要があります。私はCelerydをうまく起動し、それを使ってタスクを実行することができます(私はpython manage.py celeryd start --settings=settings --loglevel=INFOというコマンドで起動します)。Celery + Django:Windows 7でCelerybeatを起動できません

Windowsでは、ビートモードを有効にするには-beat/-bを使用できません。別のサービスとしてCelerybeatを起動する必要があります(これはCeleryのドキュメントのFAQセクションに記載されています)。

[2012-01-02 19:06:52,009: WARNING/MainProcess] ERROR: Pidfile (celerybeat.pid) a 
lready exists. 
Seems we're already running? (PID: 2364) 
[2012-01-02 19:06:52,012: INFO/MainProcess] process shutting down 

とcelerybeat実際に開始しません: - python manage.py celerybeat -s djcelery.schedulers.DatabaseScheduler --settings=settings --loglevel=INFO - 私は、コマンドラインにこれ​​を入力した場合、私はこのようなエラーが得ます。だから私は定期的なタスクを実行することはできません...任意のアイデア?私はone other pageを見つけただけで、誰かが同様のエラーを強調していたが、解決策は提示されなかった。

詳細情報が必要な場合は、私にお知らせください。私はこの問題に関する情報を見つけることができないので、私は困惑しています。今日私はこの問題を一日中解決しようとしています...ありがとう。

答えて

13

ファイルシステムでそのpidファイルを検索して削除します。 UNIXマシンでは、通常、プログラムが正しくシャットダウンされなかったことを意味します。既にタスクマネージャーで実行中であるかどうかを確認してください。その場合は、それを終了し、そのファイルを削除してください。

もう一度やり直してください。

pidファイルが存在しない場合は、恐らくunixから移植されたため、ソフトウェアに問題がある可能性があります。

+1

私はRabbitMQサービスを手動で停止し、 'celerybeat.pid'を見つけて削除し、その後RabbitMQバックアップを開始しました。本当にありがとう、なぜ私は自分自身でそれを試していないのか分からない...私はちょうどあまりにも臆病であったと思う。 この不便さを避けたい人は、コマンドプロンプトを閉じる前に常にキーボード割り込みcelerydとcelerybeatを確認してください! – hangtwenty

3

私の場合、Windows上のdjangoプロジェクトの場合、このファイルは既にDjangoプロジェクトのルートに存在していました。私はそのファイルを削除し、プロセスは何のエラーもなく実行されました。 enter image description here

セロリビートを別のPCから実行してgit repoをクラウドにプッシュしたため、「celerybeat.pid」は既に存在していました。私が働いているPCでリポジトリを取り出し、そのプロセスを実行すると、以前に別のPCで作成された "celerybeat.pid"というファイルを参照する際にエラーが発生しました。 "celerybeat.pid"を削除すると動作しました。

関連する問題