2014-11-17 6 views
0

저는 파이썬을 처음 사용하고 있으며 근본적으로 MySQL 데이터베이스를 읽고 Amazon Glacier에 업로드하여 일부 파일을 보관하는 스크립트를 작성하기 시작했습니다. 아마존에서 제공하는 boto 모듈을 몇 가지 다른 모듈과 함께 사용하고 있습니다.파이썬에서 타사 모듈을 사용/통합하는 방법

외부 서비스에 연결하는 모듈을 설치하고 활용할 때 동일한 패턴을 반복해서 복제하는 것처럼 보였습니다. 먼저 전역 설정 값을 읽고 연결 함수를 정의하는 래퍼 모듈을 작성한 다음 다양한 태스크를 수행하는 모듈에 함수를 작성하기 시작합니다. 예를 들어, 현재 boto 래퍼 모듈의 이름은 awsbox이며 getConnectionglacierUpload과 같은 기능으로 구성됩니다. 다음은 간단한 예입니다.

import config,sys,os 
import boto,uuid 

_awsConfig = config.get()['aws'] 

def getGlacierConnection(): 
    return boto.connect_glacier(aws_access_key_id=_awsConfig['access_key_id'], 
           aws_secret_access_key=_awsConfig['secret_access_key']) 


def glacierUpload(filePath): 

    if not os.path.isfile(filePath): 
    return False 

    awsConnect = getGlacierConnection()  

    vault = awsConnect.get_vault(_awsConfig['vault']) 

    vault.upload_archive(filePath) 

    return True 

제 질문은 이러한 "래퍼"모듈을 작성해야합니까? 이러한 타사 모듈을 사용하는 Pythonic 방식입니까? 이 방법은 나에게 의미가 있지만 이러한 인터페이스를 만들면 내 코드가 덜 이식성 또는 모듈성이되는지, 또는 이러한 여러 가지 다른 모듈을 기본 스크립트 구조에 통합하는 더 좋은 방법이 있는지 궁금하다.

+0

죄송합니다. 귀하의 설명은 다소 추상적입니다. 당신이하고있는 일에 대해 더 잘 이해할 수있는 코드를 보여줄 수 있습니까? –

+0

간단한 예제 인 'boto' 래퍼 모듈을 추가했습니다. – oliakaoil

답변

1

의도 한대로 모듈을 사용하고 있습니다. 가져 와서 사용합니다. 보시다시피, awsbox은 여러분의 필요에 맞는 함수 구현을 유지하는 모듈입니다.

내가이 "래퍼"모듈을 작성해야합니다

그래서 당신의 cuestion 대답?, 예 ("wrappers"라고 부르는 것을 중지 할 수 있음) 오류는 설치된 모듈을 다시 쓰는 것입니다.

이러한 타사 모듈을 사용하는 Pythonic 방식입니까?, 파이썬 방식입니다. 저자는 귀하가 사용할 모듈을 작성합니다 (가져 오기).

관련 문제