2017-09-08 9 views
0

파이썬에서이 작업을 수행하는 방법을 처음 보았습니다. 내가하고 싶은 일은 주식 시장이 중국에서 끝나기 바로 전에 특정 시간 (예 : 14:55)에 매 영업일마다 기능을 실행하는 것입니다. 이 함수는 주식 시장 데이터 공급 API에서 일부 데이터를 가져오고 신호를 생성하는 간단한 계산을 수행합니다. -1은 짧게, +1은 길게, 0은 아무 것도하지 않음을 의미합니다. 나는 아직 거래를하기 위해 아직 신호를 보내지 않을 것이다. 나는 매일 신호를 로컬 파일에 저장하고있다. 따라서 2 주 동안 신호를 수집 할 수 있거나이 스케줄러를 중지하고 싶을 때가 있습니다.python 특정 시간에 매일 함수를 실행하는 방법도 있지만 종료 할 수도 있습니다

나는 APScheduler 모듈이 아주 자주 제안된다는 것을 알게되었습니다. 그러나 나는 그것을 시도하고, 2 주 후에 스케줄러가 멈추는 것을 발견하지 못했다. 나는 단지 10 분마다 실행할 스케줄러를 설정하는 방법을 찾지 만, 10 분마다 지정된 기능을 계속 실행하고 프로그래밍 방식으로 중지 할 수는 없지만 Ctrl+C을 눌러서 만 수행 할 수 있습니까? 예를 들어, 10 분마다 6 번 실행하는 기능을 사용하려면 APScheduler에서 '6 번'인수를 지정하지 않았습니다. 또는 1 시간 후까지 10 분마다 기능을 실행하고 싶습니다. 나는 '1 시간 후'또는 '16시 30 분에'논쟁 중 하나도 보지 못했습니다. 그것을하는 방법? 내가 Windows에서 파이썬 3.6을 사용하고 10

+1

당신은 당신이 그것을 필요로 할 때 코드를 실행하는 올 것이다 크론 탭을 사용하는 것입니다 리눅스에게 쉬운 방법을 사용하는 경우 – Squick

+0

@Squick Lol 질문에 'OS'정의가 포함되지 않음 – dsgdfg

+1

@dsgdfg 이것이 "if"라고 말한 이유 – Squick

답변

0

윈도우에서 리눅스 또는 작업 스케줄러의 crontab에 대한 문제처럼 보이는 : 편집

def test_timer(): 
    ''' 
    Uses datetime module. 
    ''' 
    running = 1 
    stop_time = datetime.now() + timedelta(seconds=60) 
    while running: 

     print('I\'m working...') 
     time.sleep(5) 
     running = datetime.now() < stop_time 

    print('Goodbye!') 

:

현재

것은, 나는 이런 식으로하고 있어요 .

+0

mac os 정보 ?? – dsgdfg

+0

crontab이 MacOS에 존재 함 https://ole.michelsen.dk/blog/schedule-jobs-with-crontab-on-mac-osx.html – RedEyed

0

이 예제를 시도

from datetime import datetime 

from apscheduler.schedulers.background import BackgroundScheduler 


def job_function(): 
    print("Hello World") 

sched = BackgroundScheduler() 

# Schedule job_function to be called every 1 second 
# FIXME: Do not forget to change end_date to actual date 
sched.add_job(job_function, 'interval', seconds=1, end_date="2017-09-08 12:22:20") 

sched.start() 

업데이트 # 1

from apscheduler.schedulers.background import BackgroundScheduler 

def job_function(): 
    print("Hello World") 

# Here, you can generate your needed days 
dates = ["2017-09-08 13:30:20", "2017-09-08 13:31:20", "2017-09-08 13:32:20"] 
sched = BackgroundScheduler()      

for date in dates: 
    sched.add_job(job_function, "date", next_run_time=date) 

sched.start() 
+0

감사합니다. 'end_date'인수를 추가 할 수 없었습니다. . 매 영업일마다 실행할 스케줄러를 지정하는 방법이 있습니까? 또는 9 번 실행하십시오. – StayFoolish