2013-12-09 2 views
4

나는 한 번만 실행해야하는 파이썬 스크립트를 가지고 있습니다. (나는 삼나무 인스턴스에 보낼 repo에 커밋하지 않아도됩니다.)Heroku에서 python 스크립트를 어떻게 실행합니까?

스크립트는 내 장고 모델을 통해 데이터를 집계하고 .csv 파일을 출력합니다.

일반적으로 AWS에서는 scp 서버에 스크립트 manage.py shell < script.pyscp을 내 컴퓨터로 다시 보냅니다.

Heroku 파일 시스템이 임시 파일임을 이해하지만 은 Heroku 서버에서 생성 된 파일을 S3에 업로드하지 않고 검색하는 방법이 있습니까? 줄 바꿈 한 줄 스크립트에 대한

cat script.py | heroku run manage.py shell --app appname 

작품,하지만 :

여기 내 최선입니다.

또한 위의 스크립트는 .csv 파일을 반환하지 않고 명령 줄 출력 만 생성합니다.

답변

2

Heroku는 dyno의 어디에서나 쓰기 권한을 부여하지 않습니다 (업데이트를 푸시하면 master 브랜치에서 체크 아웃하는 파일과 종속성이 기록됩니다). 출력을 S3에 업로드하거나 로그에 저장하거나 다른 전송 메커니즘 (이메일?)을 찾아야합니다.

+0

감사합니다. 그것은 나에게 시간을 절약했다. – Prashanth

3

영웅에서 한 번만 수동으로 python 스크립트를 실행하고 싶습니다. 그게이 일을하는 방법은 다음과 같습니다 스크립트

  • 파이썬 스크립트에서 줄 django.setup() 추가에

    1. import django
    2. 쉘 명령 (즉, 장고에서 생성 된 모델을 사용하는 것이 중요하다()이어야한다) 당신의 자식 저장소에서 실행 : heroku run bash
    3. bash는 명령을 export DJANGO_SETTINGS_MODULE=projectsname.settings
    4. bash는 명령을 cd projectsname
    5. bash는 Section 명령 : python yourscriptname.py
  • 1

    거의 다 왔어. 현재 가지고있는 문제는 일반적인 쉘 구문의 작동 방식과 관련이 있습니다.

    cat script.py | heroku run manage.py shell --app appname은 줄 바꿈없이 스크립트에서 파이프됩니다.

    줄 바꿈을 사용하려면이 방법을 시도해보십시오.

    herkoku run python -c "`cat script.py`" --app appname 
    

    키가 큰 따옴표로 백틱을 래핑하면 스크립트에서 줄 바꿈이 유지됩니다.

    관련 문제