У меня есть простое приложение на Python для запуска некоторых запланированных заданий.Я хочу, чтобы эти задания выполнялись без остановок в виде сценария.
import os
import time
import requests
from apscheduler.schedulers.blocking import BlockingScheduler
from pytz import utc
def a_get_request_to_api():
request.get("some_url")
def another_get_request_to_api():
try:
request.get("some_url")
except Exception as e:
print(e)
if __name__ == "__main__":
print('STARTING SCHEDULER ...')
# initialize Blocking Scheduler
scheduler = BlockingScheduler(timezone=utc)
# add jobs to run on scheduled time
scheduler.add_job(a_get_request_to_api, trigger='interval', hours=1, max_instances=2)
scheduler.add_job(another_get_request_to_api, trigger='interval', hours=6, max_instances=2)
print('Press Ctrl+{0} to exit'.format('Break' if os.name == 'nt' else 'C'))
try:
scheduler.start()
except (KeyboardInterrupt, SystemExit) as e:
print(e)
Это нормально и работает, когда я запускаю прямо из терминала.
my Dockerfile
:
FROM python:3.6-alpine
WORKDIR /app
RUN pip install requests apscheduler pytz
CMD [ "python", "scheduler.py" ]
и простой docker-compose.yml
:
version: '3'
services:
scheduler:
build: .
volumes:
- .:/app
Но когда я докеризирую приложение и docker-compose up
оно застревает на attaching to