1

Тема: flask / linux debug

Щось сталося після оновлення чи що - не виводиться в консоль банальний print(variable), раніше такі повідомлення міг ловити в error логах апача /var/log/httpd/error_log
Відповідно віддебажити просто неможливо - бо бачу лише кінцевий результат, який мене не влаштовує, а що відбувається "посередині" - не бачу.
Шукаю спосіб вирішення.

2 Востаннє редагувалося Droid 77 (19.03.2022 22:20:58)

Re: flask / linux debug

Можливо допоможе ...
How to debug a Flask app
Remote Debugging Flask app with Pycharm, Vagrant, Apache and mod_wsgi
Debugging Application Errors
Error Logging Tools

3 Востаннє редагувалося frz (19.03.2022 23:32:20)

Re: flask / linux debug

Підказали на іншому ресурсі:

Print goes to stdout by default

Тепер намагаюся зрозуміти, що таке stdout у випадку з aws ec2...

4

Re: flask / linux debug

Англійською

In Python, whenever we use print() the text is written to Python’s sys.stdout, whenever input() is used, it comes from sys.stdin, and whenever exceptions occur it is written to sys.stderr. We can redirect the output of our code to a file other than stdout. But you may be wondering why one should do this? The reason can be to keep a log of your code’s output or to make your code shut-up i.e. not sending any output to the stdout. Let’s see how to do it with the below examples.

Джерело: How to print to stderr and stdout in Python?

5

Re: flask / linux debug

Закінчилося місце на диску!

6 Востаннє редагувалося frz (12.04.2022 23:30:25)

Re: flask / linux debug

Заготовка на майбутнє. Залишилося загорнути в Flask і буде можливість перевіряти вільне місце на диску через запит http GET, а далі при потребі - надсилати алерт.

import sys
import io
import os
import ctypes
import platform

def formatSize(bytes):
    try:
        bytes = float(bytes)
        kb = bytes / 1024
    except:
        return "Error"
    if kb >= 1024:
        M = kb / 1024
        if M >= 1024:
            G = M / 1024
            return "%.2fG" % (G)
        else:
            return "%.2fM" % (M)
    else:
        return "%.2fkb" % (kb)

def getDiskFreeSpace(disk):
    """ Return disk free space (in bytes)
    """
    if platform.system() == 'Windows':
        free_bytes = ctypes.c_ulonglong(0)
        ctypes.windll.kernel32.GetDiskFreeSpaceExW(ctypes.c_wchar_p(disk), None, None, ctypes.pointer(free_bytes))
        return formatSize(free_bytes.value)
    else:
        st = os.statvfs(disk)
        return formatSize(st.f_bavail * st.f_frsize)
    
var_diskfreespace = getDiskFreeSpace("/")

if "G" in var_diskfreespace:
    var_diskfreespace = var_diskfreespace.replace("G","")
    #print(type(var_diskfreespace))
    var_diskfreespace_float = float(var_diskfreespace)
    if var_diskfreespace_float>10:
        print(var_diskfreespace_float)
    else:
        print("Less than 10GB!")
else:
    print("Less than 1GB!")