Задать вопрос
@OrangeXD

Как запускать скрипт python Flask при помощи crontab?

Есть приложение Flask, необходимо запускать функцию проверки оплаты для каждого неоплаченного заказа каждые пять минут. Оплата проверяется наличием транзакции с 3 подтверждениями через API Blockr.io.

from app.client.models import Orders, Payments, db
import requests
import json


def check_btc(num, amount):
    s = requests.get('http://btc.blockr.io/api/v1/address/txs/' + str(num))
    transactions = json.loads(s.text)['data']['txs']
    for trans in transactions:
        if trans['amount'] == amount and trans['confirmations'] >= 3:
            return True


def check_order():
    orders = Orders.query.filter_by(status=1).all()
    payment = Payments.query.filter_by(type=2).first()
    for order in orders:
        result = check_btc(payment.num, order.price_in_currency)
        if result == True:
            order.status = 2
            db.session.commit()

Проблема в том, что не удается импортировать модели SQLALchemy. Как это заставить работать, подскажите, пожалуйста?
Ошибка ниже:
Traceback (most recent call last):                                                                                                                             
  File "app/admin/check.py", line 1, in <module>                                                                                                               
    from app.client.models import Orders, Payments, db                                                                                                         
ImportError: No module named app.client.models
  • Вопрос задан
  • 982 просмотра
Подписаться 1 Оценить Комментировать
Решения вопроса 1
@pcdesign
Имхо, крон просто не находит путь к нему.
Попробуйте так:

*/5 * * * * cd /your/path/to/app  && /your/path/to/app/your_script_name.py


Ну то есть говорите крону, что мол сначала зайди в эту папку, а потом запусти скрипт.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@dmtrrr
Backend developer
в скрипте запуска по крону должна быть команда, к-я сначала активирует виртуальное окружение, а потом запускает скрипт.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы