私はDjango Dynamic Scraperを使用して基本的なWebスクレーパーを構築しています。私は99%の道を終えました。それはセロリとスクラップと一緒に開発で完璧に動作します。タスクは完全に送信され、実行されます。Django、Djangoダイナミックスクレーパー、Djcelery、Scrapyd - プロダクションのタスクを送信しない
生産に関しては、正しくセットアップされていることがわかりました。 私はVPSでScrapydとCeleryを実行するためにスーパーバイザを使用しています。彼らは両方とも正しいvirtualenvのインストールなどを指しています...
私はそれらがプロジェクトのためにうまくセットアップされていることを知っています:私は自分のサーバーにSSHし、manage.pyシェルを使ってセロリのタスクを実行する非同期タスクを返し、それが実行されます。結果はデータベースに表示され、スクラップとセロリの両方のログに処理中のタスクが表示されます。
問題は、私のスケジュールされたタスクが自動的に起動されないことです。
# django-celery settings
import djcelery
djcelery.setup_loader()
BROKER_URL = 'django://'
CELERYBEAT_SCHEDULER = 'djcelery.schedulers.DatabaseScheduler'
そして、私のスーパーバイザーのconfigs:
セロリ設定:
[program:IG_Tracker]
command=/home/dean/Development/IG_Tracker/venv/bin/celery --
app=IG_Tracker.celery:app worker --loglevel=INFO -n worker.%%h
directory=/home/dean/Development/IG_Tracker/
user=root
numprocs=1
stdout_logfile=/home/dean/Development/IG_Tracker/celery-worker.log
stderr_logfile=/home/dean/Development/IG_Tracker/celery-worker.log
autostart=true
autorestart=true
startsecs=10
; Need to wait for currently executing tasks to finish at shutdown.
; Increase this if you have very long running tasks.
stopwaitsecs = 600
killasgroup=true
priority=998
Scrapyd設定:
[program:scrapyd]
directory=/home/dean/Development/IG_Tracker/instagram/ig_scraper
command=/home/dean/Development/IG_Tracker/venv/bin/scrapyd
environment=MY_SETTINGS=/home/dean/Development/IG_Tracker/IG_Trackersettings.py
user=dean
autostart=true
autorestart=true
redirect_stderr=true
numprocs=1
stdout_logfile=/home/dean/Development/IG_Tracker/scrapyd.log
stderr_logfile=/home/dean/Development/IG_Tracker/scrapyd.log
startsecs=10
私は私ができる限り近いドキュメントを踏襲し、推奨を使用していましたデプロイメント用のツール(scrapyd-deployなど)。さらに、サーバー上で手動でセロリとscrapydを実行すると(開発中のように)問題なく動作します。スーパーバイザを使用して2台が実行されたときだけです。
私はおそらく拾い、セロリ/ scrapyd時に生産のことで自動的に実行されることから、SQLiteのDBに保存されている私のセロリの作業を妨げているいくつかの設定や他の欠けています。
「バックグラウンド」でスーパーバイザからscrapydを実行したが、「python manage.py celeryd -l info -B --settings = IG_Tracker.settings」を使ってセロリを実行すると、scrapydプロセスでうまくいく。だから、問題はセロリ/ジャンゴ側のものだと思う。 –
あなたのスーパーバイザのconfigsは –
を喜ば質問にそれらを追加しました。 \t 主な違いは、私がルートとしてではなく無駄にセロリを実行してみましたです.... –