
小弟敲了一个小爬虫,网上搜到有 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 midasplus 2018-11-15 11:45:09 +08:00 @xiaopenggggggg 遇到了同样的问题,不过我在 docker 里面运行就不会报错,在外面用 entrypoint 或者 CMD 就都会报错,楼主最后是怎么解决的呢? 内存不足是指容器里面还是 host 中? |
9 midasplus 2018-11-15 11:57:22 +08:00 @lightening 感谢,解决了。果然是因为 twistd.pid 文件没有删除。 |