Vitaliy
Привет, ребятки! 1. Есть машинка Linux version 3.10.0-957.el7.x86_64 (mockbuild@kbuilder.bsys.centos.org) (gcc version 4.8.5 20150623 (Red Hat 4.8.5-36) (GCC) ) #1 SMP Thu Nov 8 23:39:32 UTC 2018 2. Есть сервис flask + gunicorn 3. Запускаю gunicorn --workers=4 --bind=0.0.0.0:8080 svc.http_app:app 4. ip_машинки:8080 не подключается... =( Почему не удаётся подключиться?
Ivan
А доступ к машине точно есть?
Anonymous
Какую библиотеку лучше использовать для многопотока? Threading вроде как и не настоящий многопоток из - за GIL, а субпроцессинг, думаю, будет много отжирать ресурсов при, например, 200 процессах. Есть что - то еще?
Андрей
Ага Другой язык
Anonymous
Vitaliy
А доступ к машине точно есть?
Всё пингуется. Ну иначе я бы по ssh не подключился бы... =(
Vitaliy
В логах что?
Пардон, в логах машинки или логах flask? По flask всё тихо.
Ivan
Ага Другой язык
питон с потоками плохо дружит?
Vitaliy
В логах что?
А если на машинке, то можете тыкнуть - где глядеть?
Андрей
А перед гуникорном есть кто-то? (Нгинкс)
Максим
всё просто
Максим
машинка за файрволом
Максим
напиши netstat -ta
Максим
и сбрось нам
Vitaliy
А перед гуникорном есть кто-то? (Нгинкс)
Нет Сделал iptables -I INPUT -p tcp --dport some_port -j LOG Потом tail -f /var/log/messages Подключения видны
Максим
Напиши netstat -ta
Максим
видишь 8080 port listening?
Максим
Да -> машина за файрволом Нет -> сервер не запустился
Андрей
Значит гуникорн не слушает его
Vitaliy
Значит гуникорн не слушает его
Делал iptables -I INPUT -p tcp -m tcp --dport 8010 -j ACCEPT Теперь по этому порту gunicorn не может запустится
Андрей
Делал iptables -I INPUT -p tcp -m tcp --dport 8010 -j ACCEPT Теперь по этому порту gunicorn не может запустится
Не знаю про эти утилиты, но вроде без этого можно запускать
Vitaliy
[qqq@localhost]# gunicorn --workers=4 --bind=0.0.0.0:8010 svc.http_app:app [2019-07-17 20:48:31 +0300] [17697] [INFO] Starting gunicorn 19.9.0 [2019-07-17 20:48:31 +0300] [17697] [ERROR] Connection in use: ('0.0.0.0', 8010) [2019-07-17 20:48:31 +0300] [17697] [ERROR] Retrying in 1 second. [2019-07-17 20:48:32 +0300] [17697] [ERROR] Connection in use: ('0.0.0.0', 8010) [2019-07-17 20:48:32 +0300] [17697] [ERROR] Retrying in 1 second. [2019-07-17 20:48:33 +0300] [17697] [ERROR] Connection in use: ('0.0.0.0', 8010) [2019-07-17 20:48:33 +0300] [17697] [ERROR] Retrying in 1 second. [2019-07-17 20:48:34 +0300] [17697] [ERROR] Connection in use: ('0.0.0.0', 8010) [2019-07-17 20:48:34 +0300] [17697] [ERROR] Retrying in 1 second. [2019-07-17 20:48:35 +0300] [17697] [ERROR] Connection in use: ('0.0.0.0', 8010) [2019-07-17 20:48:35 +0300] [17697] [ERROR] Retrying in 1 second. [2019-07-17 20:48:36 +0300] [17697] [ERROR] Can't connect to ('0.0.0.0', 8010)
Vitaliy
Не знаю, что сделано... Но заработало...
Vitaliy
😢😅
Jahrley
Есть иерархие директорий: top—+ | +common—+ | | | +—template.py | +specific—+ | +—instance.py Как я могу импортировать содержимое template.py в файле instance.py?
Максим
Плохая архитектура
Максим
если тебе в instance нужен template и они обе в поддерикториях то ты что-то делаешь не так
Jahrley
А как разбить чтоб было удобнее? В неком top есть несколько десятков specific директорий, которым нужен template.py. Куда лучше положить template?
angellll
Я не бот
Fᴏʀᴅᴇɴ
Я не бот
это так не работает
Vitaliy
А как разбить чтоб было удобнее? В неком top есть несколько десятков specific директорий, которым нужен template.py. Куда лучше положить template?
Оставь, нормально. Тут надо, чтобы ты использовал свой неймспейс правильно. from common import template
Vitaliy
Просто в директории надо добавить __init__.py, тобы директория была пакетом
Vitaliy
в top?
Во всех
Vitaliy
в top?
Древовидная структура пакетов
Jahrley
__init__.py оставлять пустыми или что-то в них должно быть?
Vitaliy
Или же добавить импорты на уровне пакета
Julian 🏳️‍🌈
Вот с импортами я так и не понял, как это работает
Julian 🏳️‍🌈
🌝
Vitaliy
чтобы импортировать from common.template import CONST
Vitaliy
Что я пропустил?
Создать файл в корне типа run.py В run.py импортни свою приложуху И запускай как модуль кстати python3 -m instance
Vitaliy
👆
Julian 🏳️‍🌈
Есть плюс от __main__.py
Julian 🏳️‍🌈
Когда у тебя есть папка dirname
Julian 🏳️‍🌈
А в ней __main__.py
Julian 🏳️‍🌈
То находясь в корневой папке ты можешь просто дернуть python -m dirname
Julian 🏳️‍🌈
И __main__.py сам запустится автоматом
Julian 🏳️‍🌈
Т.е. будет точкой входа
Julian 🏳️‍🌈
https://twitter.com/realpython/status/1149874828981276672?s=19
Julian 🏳️‍🌈
Топ штука
Jahrley
Создать файл в корне типа run.py В run.py импортни свою приложуху И запускай как модуль кстати python3 -m instance
Увы. continuous integration запускает именно эти specific.py и не как модули. Сейчас попробую решить это софтлинками на common
Julian 🏳️‍🌈
Правда если будешь делать console_scripts и загонять в pip, то все равно прийдется указывать явно
Vitaliy
Не помню точно. В общем надо PYTHONPATH
Jahrley
Решение прям в лбище
Julian 🏳️‍🌈
Шел скриптом?))0)
Jahrley
просто линком на тот файл
Vladyslav 🇺🇦🇪🇺
Vladyslav 🇺🇦🇪🇺
🧐
Vladyslav 🇺🇦🇪🇺
Жаль что не nvidia
Jahrley
> маякните XD
Jahrley
> маякните XD
Порешаем вопросик
Андрей
Ужас
Vladyslav 🇺🇦🇪🇺
Порешаем вопросик
Они как будто знали кому писать
Vladyslav 🇺🇦🇪🇺
Я же то еще пацанчик
Серафима O̡͙ ͈_O̧͖̣
Бля как обозначить интервал в массиве
Tishka17
1. Что за массив? 2. Что ты имеешь ввиду под интервалом?
Серафима O̡͙ ͈_O̧͖̣
1. Что за массив? 2. Что ты имеешь ввиду под интервалом?
a_area[1, (5, 9)] типа так? Массив с пикселями Интервал, типа, чтобы считалось от одного значения до другого.
Tishka17
Массив - это что? arrays.array? np.array? Обычный список?
Серафима O̡͙ ͈_O̧͖̣
Чтобы например цикл прошелся по нижнему ряду по пикселям от 5 до 9
Tishka17
Видимо, np, тогда я пожалуй сольюсь
Серафима O̡͙ ͈_O̧͖̣
Серафима O̡͙ ͈_O̧͖̣
Как обратиться епта к этим пикселям нахуй