2016-12-09 3 views
0

Я написал следующий питон скрипт:Выполнение скрипта python локально работает, но через travis-ci он не работает, что может быть причиной?

import httplib 
conn = httplib.HTTPConnection("127.0.0.1:8080") 
conn.request("HEAD", "/") 
check = conn.getresponse() 
print check.status, check.reason 
if check.status == 200: 
      exit(0) 
else: 
      exit(1) 

При запуске из моей машины, я получаю правильный ответ:

# python pytest.py 
200 OK 

Но когда Трэвис-CI запускает скрипт во время сборки, следующее сообщение об ошибке отбрасывается:

$ python pytest.py 
Traceback (most recent call last): 
    File "pytest.py", line 4, in <module> 
    check = conn.getresponse() 
    File "/opt/python/2.7.12/lib/python2.7/httplib.py", line 1136, in getresponse 
    response.begin() 
    File "/opt/python/2.7.12/lib/python2.7/httplib.py", line 453, in begin 
    version, status, reason = self._read_status() 
    File "/opt/python/2.7.12/lib/python2.7/httplib.py", line 409, in _read_status 
    line = self.fp.readline(_MAXLINE + 1) 
    File "/opt/python/2.7.12/lib/python2.7/socket.py", line 480, in readline 
    data = self._sock.recv(self._rbufsize) 
socket.error: [Errno 104] Connection reset by peer 
The command "python pytest.py" exited with 1. 

Edit # 1:

Вот бревно к сборке: https://travis-ci.org/geek-kb/tikal_assignment/builds/182633824

В чем может быть причина отказа?

+0

Работает ли сервер на порту 80? Может быть, есть команда 'sleep 3'? И, может быть, 'netstat -tuna', чтобы посмотреть, работает ли сервер. Пожалуйста, предоставьте журнал в сборку, если сможете. – joepd

+0

Я добавил журнал сборки, спасибо. –

+0

@joepd, пожалуйста, создайте ответ, чтобы я согласился, еще раз спасибо! –

ответ

1

Похоже, что вы работаете в службу на порту 8080 внутри контейнера Docker:

Step 11 : CMD python manage.py runserver 0.0.0.0:8080 

И не подвергается как таковой к хозяину:

$ docker run -d -p 8080:8080 -t camelel/django 

Попробуйте подключиться к этому порту из вашего сценария, например, например:

conn = httplib.HTTPConnection("127.0.0.1:8080") 
+0

Добавление 3 секунд сна решило проблему, но спасибо, что я изменю код. –