我在 Heroku 上創建了一個簡單的 python 應用程式來啟動 scrapyd。scrapyd 服務啟動,但它在埠 6800 上啟動。Heroku 要求您將其系結到 $PORT 變數,并且我能夠在本地運行 heroku 應用程式。該程序的日志包括在下面。我查看了一個包scrapy-heroku,但由于錯誤而無法安裝它。這個包的app.py中的代碼似乎提供了一些關于如何完成它的線索。如何將其實作為 python 命令以在 Heroku 提供的埠上啟動 scrapyd?
檔案:
web: scrapyd
Heroku 日志:
2022-01-24T05:17:27.058721 00:00 app[web.1]: 2022-01-24T05:17:27 0000 [twisted.scripts._twistd_unix.UnixAppLogger#info] twistd 21.7.0 (/app/.heroku/python/bin/python 3.10.2) starting up.
2022-01-24T05:17:27.058786 00:00 app[web.1]: 2022-01-24T05:17:27 0000 [twisted.scripts._twistd_unix.UnixAppLogger#info] reactor class: twisted.internet.epollreactor.EPollReactor.
2022-01-24T05:17:27.059190 00:00 app[web.1]: 2022-01-24T05:17:27 0000 [-] Site starting on 6800
2022-01-24T05:17:27.059301 00:00 app[web.1]: 2022-01-24T05:17:27 0000 [twisted.web.server.Site#info] Starting factory <twisted.web.server.Site object at 0x7f1706e3eaa0>
2022-01-24T05:17:27.059649 00:00 app[web.1]: 2022-01-24T05:17:27 0000 [Launcher] Scrapyd 1.3.0 started: max_proc=32, runner='scrapyd.runner'
2022-01-24T05:18:25.204305 00:00 heroku[web.1]: Error R10 (Boot timeout) -> Web process failed to bind to $PORT within 60 seconds of launch
2022-01-24T05:18:25.231596 00:00 heroku[web.1]: Stopping process with SIGKILL
2022-01-24T05:18:25.402503 00:00 heroku[web.1]: Process exited with status 137
uj5u.com熱心網友回復:
您只需要讀取 PORT 環境變數并將其寫入您的 scrapyd 組態檔。您可以查看執行相同操作的此代碼。
# init.py
import os
import io
PORT = os.environ['PORT']
with io.open("scrapyd.conf", 'r ', encoding='utf-8') as f:
f.read()
f.write(u'\nhttp_port = %s\n' % PORT)
來源:https ://github.com/scrapy/scrapyd/issues/367#issuecomment-591446036
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/421189.html
標籤:
