我使用Django Dynamic Scraper來構建基本的Web刮板。我有99%的方式完成。它與Celery和Scrapyd一起發展很完美。任務完成發送和完成。Django,Django動態刮板,Djcelery和Scrapyd - 不在生產中發送任務
至於生產我很確定我已經正確設置了一些東西: 我使用Supervisor在我的VPS上運行Scrapyd和Celery。他們都指向正確的virtualenv安裝等...
這是我如何知道他們都設置罰款的項目:當我SSH進入我的服務器,並使用manage.py外殼執行芹菜任務它會返回一個Async任務,然後執行該任務。結果顯示在數據庫中,我的scrapyd和celery日誌顯示正在處理的任務。
問題是我的計劃任務沒有被自動觸發 - 儘管在開發過程中可以找到完美的工作。
# 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時(正如開發中的那樣),事情很好。就在兩人都在使用主管的時候。
我可能會缺少一些設置或其他設置,這會阻止存儲在SQLite數據庫中的芹菜任務被拾取並在生產過程中由芹菜/ scrapyd自動運行。
當我在'背景'中從Supervisor運行scrapyd,但使用'python manage.py celeryd -l info -B --settings = IG_Tracker.settings'運行芹菜時,事情很好,芹菜與scrapyd進程很好。所以我認爲問題出在Celery/Django方面。 –
你的主管配置請 –
加入他們的問題。 \t 主要區別是我嘗試運行芹菜作爲根,但無濟於事.... –