Python中如何将Scrapy部署到服务器?
小弟敲了一个小爬虫,网上搜到有 scrapyd 方式部署,于是本地 pip install scrapyd。在本地测试完全爬虫跑得妥妥的,于是想仍到 docker 容器里面去。写了一个 DockerFile,内容大致如下:
FROM python:3.5.5
ENV PATH /usr/local/bin:$PATH
ADD . /scrapy_weather
WORKDIR /scrapy_weather
COPY ./scrapyd.conf /etc/scrapyd/
EXPOSE 6800
CMD scrapyd
构建了一个 docker 镜像,然后在自己的 mac 本的 docker 里面跑得飕飕的,没有一点问题,于是把镜像推送出去,结果在 centos 的服务器上面,同样的镜像,会报以下错误:
Another twistd server is running, PID 5
This could either be a previously started instance of your application or a
different application entirely. To start a new one, either run it in some other
directory, or use the --pidfile and --logfile parameters to avoid clashes.
小弟实在是没招了,想与各位 py 大佬们交流一波,scrapy 的优雅部署方式
Python中如何将Scrapy部署到服务器?
哪有什么优雅的方式。
1. 推一份源码,直接跑
2. 推一份源码,用虚拟环境
3. docker
推源码的方式有很多种,scp、git、upload
我无法理解你的问题。
怎么会这样,不应该发生啊
确实很奇怪,在本地的 mac 本的 docker 中跑这个镜像不会报错,但是仍到服务器会报这个错误。然后在本机进入 docker 容器里面,敲 scrapyd 命令也会报同样的错误。实在不知道为什么服务器抽风了😫
去服务器重新 build 试试。感觉像是 pid 文件没删掉?
解决了该问题,是内存不足,直接把容器给 kill 掉了。
如何简单高效地部署和监控分布式爬虫项目 v2ex.com/t/507933
遇到了同样的问题,不过我在 docker 里面运行就不会报错,在外面用 entrypoint 或者 CMD 就都会报错,楼主最后是怎么解决的呢? 内存不足是指容器里面还是 host 中?
感谢,解决了。果然是因为 twistd.pid 文件没有删除。


