2017-05-17 8 views
0

나는 플라스크 프레임 워크에서 점심 식사로부터 30 분 이내에 시작될 작업을 계획하려고하는데 일하고 있습니다. 파이썬 플라스크에서 시간이 지정된 이벤트를 예약하려면 어떻게해야합니까?

나는 threading.Timer의 작업을하려고하지만 내 직업은 내가 RuntimeError에를 받고 있어요 REST 요청을 호출 이후 : 난 그냥 해결할 수의 요청 컨텍스트 밖에서 일하는 '. How do you schedule timed events in Flask?

이 그래서가 작동하지 않는 (시간 형 트리거 작업을위한 솔루션을 찾고 있어요 :

이 스레드에서

, 나는 그것이 플라스크 서버의 스레딩 모듈을 사용하지 않는 것이 좋습니다 이해 간격).

APscheduler는 간격 기반이어야합니다.

나는 도움을 주셔서 감사합니다.

+1

'셀러리 '를 사용해보십시오. – stamaimer

+0

안녕하세요, 타이머가없는 새 스레드를 생성하면 동일한 RunTimeError가 발생하기 때문에 제 문제가 다를 수도 있다고 생각합니다. 새로운 스레드가 생성되면 앱 컨텍스트 또는 요청 컨텍스트를 얻지 못하는 것으로 보입니다. 새로운 스레드에 매개 변수로 앱 컨텍스트를 전달할 수있었습니다. 그러나 여전히 요청 컨텍스트가없고 요청에 도달하려고 시도 할 때 예외가 발생합니다. 요청을 생성 할 수 있습니까, 아니면 요청을 전달해야합니까? 고마워요 :) – Lito26

+0

http://flask.pocoo.org/docs/0.12/patterns/celery/ – stamaimer

답변

1

apscheduler add_job 메서드는 원하는 작업을 수행 할 수있는 date 트리거를 사용할 수 있습니다.

프로 팁 :

당신이 당신의 플라스크 응용 프로그램 프로세스 내에서 apscheduler를 사용하는 경우, gunicorn 또는 uwsgi 당신이 당신의 작업과 함께 손 것 같은 WSGI 서버와 생산에 갈 때 각각에 대해 여러 시간 (하나를 실행하고 플라스크 작업자).

이 문제에 직면했을 때 gunicorn --preload 옵션으로 나를 대신 할 수 없습니다. 그래서

: 그 당신을 맞는 경우

  • 당신은 그의 나머지 서버 접근 방식으로 플라스크-apscheduler를 사용할 수 있습니다.
  • 또는는 데몬과
    • 사용 uwsgi mules
    • 을 apscheduler을 분리 또는 유일한 웹 응용 프로그램을 실행 gunicorn 유지하고 스케줄러 데몬 시작 관리자를 사용합니다.
    • 또는 약간 더러운 소켓이있는 this 솔루션을 사용하지만 간단하다는 장점이 있습니다.

이럴 감독자의 두 부분으로 gunicorn/플라스크 apscheduler의 분리 및 사용은 아직 복잡 깨끗한 용액이 아니다.