Использование UWSGI в приложении Flask для запуска отчетов на cron - PullRequest
0 голосов
/ 28 марта 2020

В настоящее время я пытаюсь использовать UWSGI для запуска запланированных заданий cron;
Он запускается в приложении flask (намерение состоит в том, чтобы иметь дружественный интерфейс, где я мог бы просматривать задачи для запуска / последнего запуска / редактирования). период времени для запуска et c)
Однако, похоже, что когда я регистрирую сигнал, используя uwsgi.register_signal, затем добавляю cron для запуска сигнала, указанная функция будет запускаться несколько раз (просматривая журналы)

Я использую flask_sqlalchemy для хранения деталей cron, они отображаются через schedule class

Вот код, который я использую:


def register_signals():
    for x in schedule.query.all():
        uwsgi.register_signal(x.id+30,"",functionName)

def deployworker():
    for x in schedule.query.all():
        utc=dt.datetime.strptime(x.utc,('%H-%M-%S'))
        uwsgi.add_cron(x.id+30,utc.minute,utc.hour,-1,-1,-1)

def all_updates(self):
    schedules=schedule.query.all()

    #some other code in here which ensures crons have UTC time recorded (user inputs in local time)
    register_signals()
    deployworker()

uwsgi.register_signal(29, "", all_updates)
#need to add timer to regularly review the crons database to check if run times have changed
#(probably only needs to happen daily)
uwsgi.add_timer(29,30)

Я знаю, что это можно сделать более простым способом (ie с помощью отдельных сценариев и crontab), но на самом деле очень хочу иметь его в приложении flask (часть гораздо более крупного приложения), используя uwsgi (или что-то подобное , если это может быть импортировано в)
Спасибо.

...