21 Востаннє редагувалося ping (05.01.2021 18:45:19)

Re: Рецепти для Flask

frz написав:

pluszz

flask run --host=127.0.0.23 --port=5001

А як його потім на проді запускати разом зі стартом системи, щоб не робити це вручну? В принципі, я можу це зробити через кастомний старт-ап скрипт в убунті, також прикрутити до тулзи monit щоб перевіряло чи доступний порт і рестартувати аплікацію якщо недоступний. Чи можливо є якісь штатні засоби?

взагалі -то рідний фласковський вебсервер сервер аплікацій не бажано для проду.
gunicorn вроді зараз в тренді https://gunicorn.org/
колись юзав uwsgi

22

Re: Рецепти для Flask

тобто - джаного, фласк мають вбудовані вебсервери, які норм для девелопменту.
для проду - аплікації запускають через gunicorn (чи що інше) а вебсервер типу апача чи нджінкса обслуговує статику і роутить запити на аплікації

23

Re: Рецепти для Flask

ping

апач має роздавати всю статику сам. і тільки запити до веб-аплікації спрямовувати на неї.

У такому випадку просто на статичних сторінках додаємо посилання на Flask-аплікацію типу example.com:номер_порта і на сторінках аплікації - теж зворотнє посилання на статику типу example.com/home.html

Залишилося пройти туторіал Flask для створення простого CRUD...

24

Re: Рецепти для Flask

для проду - аплікації запускають через gunicorn (чи що інше)

Так, читав про це десь, виходить що ця частина в мене ще попереду...

25 Востаннє редагувалося plusxx (05.01.2021 20:59:39)

Re: Рецепти для Flask

Командою flask run на 5000 порті запускаєть ся саме сервер для розробки .
****
Відредаговано в зв'язку з тим  що я непомітив деяких повідомлен перед тим як писати бредні
****

Той самий пан по туторіалу котрого я вивчаю той самий flask описує як запустити flask задопомогою gunicorn і в Докер Контейнері втеорії то взагалі бомба хоча я так і незміг запустити його на своїм ноуті, та  ще повернусь до того.

Подякували: frz1

26 Востаннє редагувалося plusxx (05.01.2021 21:17:19)

Re: Рецепти для Flask

frz написав:

pluszz

flask run --host=127.0.0.23 --port=5001

А як його потім на проді запускати разом зі стартом системи, щоб не робити це вручну? В принципі, я можу це зробити через кастомний старт-ап скрипт в убунті, також прикрутити до тулзи monit щоб перевіряло чи доступний порт і рестартувати аплікацію якщо недоступний. Чи можливо є якісь штатні засоби?

Це лише для сервера розробки!!!
Треба встановити пакет пайтон python-dotenv.
Створити файл .env в котрому прописати всі необхідні вам змінні середовища.
Конкретно для хоста:

FLASK_RUN_HOST= 127.0.0.23
FLASK_RUN_PORT=5001

Потім прописати в проекті

from dotenv import load_dotenv

load_dotenv(os.path.join(basedir, '.env'))

Повинно запускатись на потрібнім вам  порті.

Подякували: frz1

27

Re: Рецепти для Flask

панове, я давав посилання на django book, яку читав сам 4 роки тому, але, як виявилося з того часу вже вийшла версія джанго-3 і та книга добряче застаріла.
а сучасний варіант, як виглядає,  став платним
https://djangobook.com/books/

тому рекомендую почитати офіційний туторіал для початківців https://docs.djangoproject.com/en/3.1/intro/tutorial01/

Language: en
    Documentation version: 3.1
Writing your first Django app¶

Взагалі їх туторіал колись був дуже якісним, сподіваюся, таким і лишився.

якщо ж є бажання почитати ще щось - колись була гарна книга  В.Подоби -
http://www.vitaliypodoba.com/books/djan … beginners/

пару глав можна навіть безкоштовно:
http://www.vitaliypodoba.com/books/djan … _chapter=1

питання - чи актуальна зараз версія книги - але залишаю це вже для пошукачів.


п.с.
також рекомендую звернути увагу на FastAPI як альтернативу Фласку - там де не треба веб-мордочки або їй роль буде виконувати щось на джаваскрипті - типу vue.js

для джанго є DRF - https://www.django-rest-framework.org/

і, якщо є норм знайомство з фронтендом, то цілком може виявится , що ефективніше написати REST API на беку і запиляти web-GUI на vuejs, аніж вивчати тонкощі роботи з формами та статикою в окремо взятому світі джанго.

Подякували: plusxx, leofun012

28

Re: Рецепти для Flask

Я трохи в ступорі. Ось мені треба одну табличку з бази відобразити на вебі і дати юзерам можливість її редагувати. Чого нема простого як двері "хелло ворд" для цього... Треба читати купу всього  *DONT_KNOW*

29 Востаннє редагувалося plusxx (06.01.2021 01:01:20)

Re: Рецепти для Flask

frz написав:

Я трохи в ступорі. Ось мені треба одну табличку з бази відобразити на вебі і дати юзерам можливість її редагувати. Чого нема простого як двері "хелло ворд" для цього... Треба читати купу всього  *DONT_KNOW*

В любій ORM вам треба підключити або створити базу даних, створити модель даних(як клас) з'якою будете працювати  і описати методи взаємодії. І потім вже викликати то з основного коду вашого додатку.

Подякували: leofun011

30 Востаннє редагувалося ping (06.01.2021 01:19:28)

Re: Рецепти для Flask

frz написав:

Я трохи в ступорі. Ось мені треба одну табличку з бази відобразити на вебі і дати юзерам можливість її редагувати. Чого нема простого як двері "хелло ворд" для цього... Треба читати купу всього  *DONT_KNOW*

бо Ви обрали фреймвок. та ще не простий, а джанго.
джанго не вигідно задіювати на прості завдання.

колись говорили, що програмувати на джанго != програмувати на пітоні
думаю що ситуація не змінилася.

для простих завдань - тут якраз фласк  виграє.

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

якщо ж Вам треба одну табличку - можете навіть без ОРМ просто з фласка її прочитати, видати на веб користувачеві і т.п.
простими формами.

в прикріпленому файлі - тестове завдання, яке я робив 4 роки тому, коли шукав роботу.

Simple REST API (Back-End : Flask + Flask-RESTful, Front-End : Vue.js)

може щось цікаве для себе знайдете.

Post's attachments

guestbook-master.zip 9.13 kb, 177 downloads since 2021-01-05 

Подякували: plusxx, frz2

31 Востаннє редагувалося frz (08.01.2021 22:12:04)

Re: Рецепти для Flask

Відчуваю себе наче школяр молодших класів в інституті. Проходжу вже n+1 туторіал з Flask і щоразу зачіпляюсь за якусь невідповідність, тому далі не просуваюся.

Тепер мені набридло, я прогулявся навколо будинку і далі вирішив писати тут бортовий журнал. Можливо, хтось поглядом збоку побачить в чому моя помилка і виправить.

Отже, зараз пробую пройти цей туторіал:
https://www.rithmschool.com/courses/fla … n-to-flask

Зараз я на цьому кроці:

export VIRTUALENVWRAPPER_PYTHON=/Library/Frameworks/Python.framework/Versions/3.6/bin/python3

Отримую помилку, коли роблю перезавантаження .bashrc

$ . ~/.bashrc
bash: /Library/Frameworks/Python.framework/Versions/3.6/bin/python3: No such file or directory
virtualenvwrapper.sh: There was a problem running the initialization hooks.

If Python could not import the module virtualenvwrapper.hook_loader,
check that virtualenvwrapper has been installed for
VIRTUALENVWRAPPER_PYTHON=/Library/Frameworks/Python.framework/Versions/3.6/bin/python3 and that PATH is
set properly.

Який вірний шлях замість /Library/Frameworks/Python.framework/Versions/3.6/bin/python3 ?

$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 20.04.1 LTS
Release:        20.04
Codename:       focal
$ python3 --version
Python 3.8.3

Upd: шлях /Library/Frameworks/Python.framework/Versions/3.8/bin/python3 теж не підходить.

32

Re: Рецепти для Flask

frz написав:

Отримую помилку, коли роблю перезавантаження .bashrc

$ . ~/.bashrc
bash: /Library/Frameworks/Python.framework/Versions/3.6/bin/python3: No such file or directory
virtualenvwrapper.sh: There was a problem running the initialization hooks.

If Python could not import the module virtualenvwrapper.hook_loader,
check that virtualenvwrapper has been installed for
VIRTUALENVWRAPPER_PYTHON=/Library/Frameworks/Python.framework/Versions/3.6/bin/python3 and that PATH is
set properly.

virtualenvwrapper встановили за інструкцією ?
Інші export'и прописані ?

33 Востаннє редагувалося frz (08.01.2021 22:45:57)

Re: Рецепти для Flask

$ pip3 install virtualenvwrapper
Requirement already satisfied: virtualenvwrapper in /home/user1/anaconda3/lib/python3.8/site-packages (4.8.4)
Requirement already satisfied: stevedore in /home/user1/anaconda3/lib/python3.8/site-packages (from virtualenvwrapper) (3.3.0)
Requirement already satisfied: virtualenv in /home/user1/anaconda3/lib/python3.8/site-packages (from virtualenvwrapper) (20.2.2)
Requirement already satisfied: virtualenv-clone in /home/user1/anaconda3/lib/python3.8/site-packages (from virtualenvwrapper) (0.5.4)
Requirement already satisfied: pbr!=2.1.0,>=2.0.0 in /home/user1/anaconda3/lib/python3.8/site-packages (from stevedore->virtualenvwrapper) (5.5.1)
Requirement already satisfied: six<2,>=1.9.0 in /home/user1/anaconda3/lib/python3.8/site-packages (from virtualenv->virtualenvwrapper) (1.15.0)
Requirement already satisfied: distlib<1,>=0.3.1 in /home/user1/anaconda3/lib/python3.8/site-packages (from virtualenv->virtualenvwrapper) (0.3.1)
Requirement already satisfied: appdirs<2,>=1.4.3 in /home/user1/anaconda3/lib/python3.8/site-packages (from virtualenv->virtualenvwrapper) (1.4.4)
Requirement already satisfied: filelock<4,>=3.0.0 in /home/user1/anaconda3/lib/python3.8/site-packages (from virtualenv->virtualenvwrapper) (3.0.12)

перевіряю експорти...

34

Re: Рецепти для Flask

А що так критично щоб був саме  python 3.6?
Чому не скористатись  venv і не створити віртуальне середовище з актуальною у вас версією python?

python3 -m venv <шлях до  вашої virtualenv>

Я ніколи некористувався virtualenvwrapper.
Як альтернативу можу запропонувати  pyenv
Тут про мій досвід користування https://replace.org.ua/topic/12061/.

Подякували: leofun01, ping2

35

Re: Рецепти для Flask

python3 -m venv <шлях до  вашої virtualenv>

Що саме означає "шлях до  вашої virtualenv"?
Версія python не критична, аби третя.

36 Востаннє редагувалося frz (08.01.2021 22:54:38)

Re: Рецепти для Flask

source /usr/local/bin/virtualenvwrapper.sh

На цьому спостерігаю дивний глюк. При спробі перезавантаження .bashrc помилка:

bash: /usr/local/bin/virtualenvwrapper.sh: No such file or directory

Що??

$ whereis virtualenvwrapper
virtualenvwrapper: /usr/local/bin/virtualenvwrapper.sh /home/user1/anaconda3/bin/virtualenvwrapper.sh
$ ls /usr/local/bin/v*
/usr/local/bin/virtualenvwrapper.sh

Ок, використовую /home/user1/anaconda3/bin/virtualenvwrapper.sh

Але помилка

bash: /Library/Frameworks/Python.framework/Versions/3.6/bin/python3: No such file or directory

нікуди не поділася, 3.8 теж не підходить. Що за фігня?

37

Re: Рецепти для Flask

venv навідміну від інструмента virtualenvwrapper незберігає всі віртуальні середовища(далі virtualenv) в однім й папці ви можете зберегти своє віртуальне середовище в любім місці на диску і назвати як хочете. Зручно зберігати його в папці проекту.
Зрештою тут краще пояснено venv

Подякували: leofun01, frz2

38

Re: Рецепти для Flask

pluszz

venv

Дякую, спробую скористатись.

У цьому й проблема для початківця - відсутність толкового цілісного туторіала, принаймні я поки що не знайшов. Як бачимо, шматок вже потрібно адаптувати з врахуванням іншого інструменту.

39

Re: Рецепти для Flask

Далі все пішло поки що добре, крок "Postgres із Flask" пройшов успішно
https://www.rithmschool.com/courses/fla … with-flask
Наступним кроком буде "SQL Alchemy із Flask"
https://www.rithmschool.com/courses/fla … with-flask

Єдине що я так і не подолав віртуальні середовища. Тобто спробував venv, однак так і не зрозумів що саме станеться, якщо не користуватися цим взагалі. Тобто що якщо я просто буду девелопити стейджинг в окремій фізичній папці, без використання venv чи virtualenvwrapper? Питання ламерське, однак відповідь не описана в туторіалі і думаю що буде швидше написати про це тут ніж ґуґлити (проблема що навіть не знаю як сформулювати вірно запитання).

Подякували: plusxx1

40

Re: Рецепти для Flask

frz написав:

Далі все пішло поки що добре, крок "Postgres із Flask" пройшов успішно
https://www.rithmschool.com/courses/fla … with-flask
Наступним кроком буде "SQL Alchemy із Flask"
https://www.rithmschool.com/courses/fla … with-flask

Єдине що я так і не подолав віртуальні середовища. Тобто спробував venv, однак так і не зрозумів що саме станеться, якщо не користуватися цим взагалі. Тобто що якщо я просто буду девелопити стейджинг в окремій фізичній папці, без використання venv чи virtualenvwrapper? Питання ламерське, однак відповідь не описана в туторіалі і думаю що буде швидше написати про це тут ніж ґуґлити (проблема що навіть не знаю як сформулювати вірно запитання).

то за гроші курси, чи нє?