小弟敲了一个小爬虫,网上搜到有 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 的优雅部署方式
1
lanpong 2018-07-12 23:45:29 +08:00 via iPhone
哪有什么优雅的方式。
1. 推一份源码,直接跑 2. 推一份源码,用虚拟环境 3. docker 推源码的方式有很多种,scp、git、upload |
2
lightening 2018-07-12 23:48:56 +08:00
怎么会这样,不应该发生啊
|
3
xiaopenggggggg OP @lightening 确实很奇怪,在本地的 mac 本的 docker 中跑这个镜像不会报错,但是仍到服务器会报这个错误。然后在本机进入 docker 容器里面,敲 scrapyd 命令也会报同样的错误。实在不知道为什么服务器抽风了😫
|
4
Molita 2018-07-13 11:02:10 +08:00
按提示的那个 加上 pidfile logfile 试一试呗
|
5
lightening 2018-07-13 15:17:49 +08:00 via iPhone
去服务器重新 build 试试。感觉像是 pid 文件没删掉?
|
6
xiaopenggggggg OP @lightening 解决了该问题,是内存不足,直接把容器给 kill 掉了。
|
7
my8100 2018-11-15 00:00:29 +08:00
如何简单高效地部署和监控分布式爬虫项目 v2ex.com/t/507933
|
8
111qqz 2018-11-15 11:45:09 +08:00
@xiaopenggggggg 遇到了同样的问题,不过我在 docker 里面运行就不会报错,在外面用 entrypoint 或者 CMD 就都会报错,楼主最后是怎么解决的呢? 内存不足是指容器里面还是 host 中?
|
9
111qqz 2018-11-15 11:57:22 +08:00
@lightening 感谢,解决了。果然是因为 twistd.pid 文件没有删除。
|