2016-07-27 10 views
0

동일한 네트워크에 두 대의 컴퓨터가 있는데, 더 큰 프로젝트의 컨텍스트에서 파이썬을 사용하여 다른 컴퓨터로 파일을 전달하려고합니다.파이썬과 병 서버로 파일 업로드하기

: 나는 같은 요청 라이브러리를 통해 파일을 보내려고 클라이언트 측에

import bottle 
import json 

@bottle.hook('after_request') 
def enable_cors(): 
    """ 
    You need to add some headers to each request. 
    Don't use the wildcard '*' for Access-Control-Allow-Origin in production. 
    """ 
    bottle.response.headers['Access-Control-Allow-Origin'] = '*' 
    bottle.response.headers['Access-Control-Allow-Methods'] = 'PUT, GET, POST, DELETE, OPTIONS' 
    bottle.response.headers['Access-Control-Allow-Headers'] = 'Origin, Accept, Content-Type, X-Requested-With, X-CSRF-Token' 

# LANDING (IT IS NOT REALLY NEEDED JUST TO CHECK STUFF) 
@bottle.route('/', method='GET') 
def root(): 
    return { 
     'api': 'api/' 
    } 

@bottle.route('/api', method='POST') 
def upload(): 
    upload = bottle.request.files.get('file') 
    print upload.filename 
    upload.save('input.txt') 

if __name__ == '__main__': 
    bottle.run(host='0.0.0.0', port=8080, debug=True) 

: 나는 다음과 같은 병 스크립트를 가지고서버 측에

import sys 
import requests 

r = requests.post('http://ip:port/api/', files={'file': open(sys.argv[1], 'rb')}) 
print r 

(ip포트).

이 오류가 발생합니다. 처리 방법을 모르겠습니다.

Traceback (most recent call last): 
    File "loopmatch.py", line 4, in <module> 
    r = requests.post('http://ip:port/api/', files={'file': open(sys.argv[1], 'rb')}) 
    File "/usr/local/lib/python2.7/site-packages/requests/api.py", line 111, in post 
    return request('post', url, data=data, json=json, **kwargs) 
    File "/usr/local/lib/python2.7/site-packages/requests/api.py", line 57, in request 
    return session.request(method=method, url=url, **kwargs) 
    File "/usr/local/lib/python2.7/site-packages/requests/sessions.py", line 475, in request 
    resp = self.send(prep, **send_kwargs) 
    File "/usr/local/lib/python2.7/site-packages/requests/sessions.py", line 585, in send 
    r = adapter.send(request, **kwargs) 
    File "/usr/local/lib/python2.7/site-packages/requests/adapters.py", line 453, in send 
    raise ConnectionError(err, request=request) 
requests.exceptions.ConnectionError: ('Connection aborted.', error(32, 'Broken pipe')) 

모든 도움을 주실 수 있습니다.
감사합니다.

+1

저기서 어떤 문제도 보이지 않습니다 ... 확실히 작동해야합니다 ... 프록시를 사용하고 있습니까? pyc를 깨끗이하고 필요하다면 pid를 닫고 실행하기 전에 실행하는 ip 포트가 자유로운 지 확인하십시오. –

+0

모든 점에 대해서는 괜찮습니다. * 루트 * 라우트는 이러한 문제점을 평가할 수 있도록 설정되었습니다. 나는 실수를 보았다. 그러나 당신의 대답에 감사드립니다! – jaumebonet

답변

0

그래서 ... 문제는 ... 그냥 경우 다른 사람이 여기에 답을 떠나는 것은

...이 바보 같은 실수와 bottle.routerequests.url을 꽤 바보 굴러됩니다과 정확하게 일치해야합니다 (정확히). URLapi/ 동안 5 월 경우, 경로

모두 api/ 또는 api로 이동해야 ... 그들은 작동하지 않은 이유는 ... api했다.

+1

차가움. 정확히 일치해야하는 이유는 HTTP 사양에 따라'/ api'와'/ api /'가 * 다른 * 경로이기 때문입니다. 그것들을 동등한 것으로 생각하면 Bottle이나 웹 프레임 워크에서 심각한 문제가 될 수 있습니다. –