2017-11-03 1 views
2

HTTP를 통해 json 형식으로 데이터를 다운로드하는 Python 스크립트가 있습니다. 요청 모듈을 사용하여 명령 줄을 통해 스크립트를 실행하면 HTTP 연결이 성공적으로 완료되고 데이터가 아무런 문제없이 다운로드됩니다. 그러나 스크립트를 crontab 작업으로 시작하려고하면 잠시 후 HTTP 연결에서 시간 초과가 발생합니다. 아무도 여기에 무슨 일이 일어나는지 말해 주실 수 없습니까? 나는 현재 bash 스크립트를 통해 데이터를 다운로드하고 그 bash에서 파이썬 스크립트를 실행하고있다. 그러나 이것은 말도 안돼! 정말 고맙습니다!crontab을 통해 스크립트가 시작될 때 Python 요청이 중단됩니다.

사용법 : 3.6.1 | Anaconda custom (64-bit) | (default, May 11 2017, 13:09:58) \ n [GCC 4.4.7 20120313 (Red Hat 4.4.7-1)]

P .:이 문제와 관련된 게시물을 찾지 못했습니다. 이미 다른 게시물에 대한 답변이있는 경우 사과를 수락하십시오.

이것은 내 코드에서 발췌 한 것입니다. 요청을 실행할 때 시간이 초과되었습니다 .get (url) :

try: 
    response = requests.get(url) 
    messages = response.json()["Messages"] 
except requests.exceptions.Timeout: 
    logging.critical("TIMEOUT received when connecting to HTTP server.") 
except requests.exceptions.ConnectionError: 
    logging.critical("CONNECTION ERROR received when connecting to HTTP server.") 
+0

URL 및/또는 URL 생성 방법을 지정할 수 있습니까? 두 경우 모두 기록하고 줄을 맞 춥니 다? 내가 조사 할 첫 번째 일은 URL이 당신이 생각하는 것인가하는 것입니다. 환경 변수에서. – lyngvi

+0

답변 해 주셔서 감사합니다! 나는 실제 URL을 지정할 수 있는지 확신 할 수 없다. 나는 그것을 확인해야 할 것이다. 어쨌든, 내가 말할 수있는 한 가지는 스크립트가 명령 행을 통해 완벽하게 작동하는 반면 crontab을 통해 실행되면 멈추는 것입니다. 나는 URL이 적절히 구성되어 (결과를 출력 한 다음 그 문자열을 Python 인터프리터에 붙여 넣어 붙여 테스트 한 결과) 매우 긍정적이다. 어쨌든 방금 다른 아이디어로 테스트 해 보았습니다. –

+0

어떻게 만들어 졌는지 묻는 더 많은 이유. 예를 들어, Cron이 실행되는 환경은 일반적으로 보통 실행되는 환경과 일치하지 않습니다 (예 :'.bashrc' /'.bash_profile'의 변수는 일반적으로 사용할 수 없습니다). – lyngvi

답변

0

방금 ​​내 질문에 대한 답을 찾았습니다. 내가 사용하는 프록시를 정의하고 내 코드에서 다음과 같이 사용했습니다 :

HTTP_PROXY="http://your_proxy:proxy_port" 
PROXY_DICT={"http":HTTP_PROXY} 

response = requests.get(url, proxies=PROXY_DICT) 

참조 :

Proxies with Python 'Requests' module

당신의 이해를위한 여러분 모두 감사합니다. 게시하기 전에 철저한 검색을 수행해야합니다. 죄송합니다.

관련 문제