Tishka17
А смысл?
Egor
казалось бы запускаешь два процесса и они будут параллельно работать - но в одном bot.polling() блокирующий, а другом while true - и они не могут стартовать одновременно
Tishka17
Изобретаешь системы запуска приложений?
Tishka17
Egor
ага
Tishka17
Ну вот и сделай два сервиса
Egor
а если все-таки абстрагироваться от этой идеи и понять почему не могут запуститься два процесса с блокирующим тредом?
Egor
в каждом
Egor
мне кажется что это какое-то не нормальное поведение системы
âDêšwu öBipci
Нормальное
Egor
Нормальное
объясни плз. на сколько я понимаю, должен блокироваться созданный процесс, но почему блокируется все приложение?
Tishka17
Egor
Могут
подскажи пожалуйста что нужно учесть для того чтобы они могли, потому что у меня они в данный момент не могут
Egor
в самом низу инита фласка у меня Process(target=tgbot.watchdog()).start()
Process(target= bot.polling()).start()
Tishka17
Я упустил трейс и код. Иди не было?
Egor
если первый запустился то второй не запускается
Tishka17
У тебя до запуска процесса не доходит
Tishka17
Он ждёт пока watchdog закончит работать и вернёт результат, который уже будет передан в новый процесс как таргет
Pavel
Tishka17
В таргет надо передать функцию
Tishka17
Если ты функцию вызвал, вот когда она что-то вернёт, оно и будет передано в таргет
Pavel
Pavel
который с while 1
Dogma
Pavel
до создания процесса он видимо не дойдет никогда
Dogma
Посмотри в таргет
Tishka17
Pavel
я про это же
Pavel
Egor
без скобок поведение такое же
Tishka17
Покажи как скобки убрал и какое поведение наблюдаешь
Pavel
Egor
Egor
Tishka17
Так
Tishka17
И почему ты решил, что ничего не изменилось?
Tishka17
Например, дерево процессов смотрел? Или может принты у тебя где-то есть?
Tishka17
В смысле, либо?
Egor
в зависимости от того как я переставляю в коде процессы
Egor
ну короче если говорить о ситуации на данном скрине то только поллинг работает
Tishka17
Tishka17
Лучше деревом
Egor
Egor
внезапно
Anonymous
В чем дело было?
Tishka17
Наверняка в коде, который не показал
Egor
я более пристально вгляделся и все таки не зависимо от того в каком порядке стартуют процесс, отрабатывал только вотчдог - что навело на мысль что поллинг в процессе не работает (хотя и ошибки не дает) - видимо там под капотом юзается queue
Egor
Egor
а так работает
Egor
Anonymous
Ке?
Egor
я с подобным сталкивался когда сокетио заводил из-под мультипроцессинга, без редиса оно не работает
Anonymous
Гевент работает норм на процессах
Egor
видимо потому что из процесса теряет из контекста экземпляр класса который инициализируется в мейн процессе, и работать будет только с редисом (или прочим кешем сообщений)
Anonymous
Тут что-то другое
Egor
опять же гевент все таки штука для управления потоками, а не процессами
Egor
и на ту же граблю вроде легко можно с ним наступить
Anonymous
Фласк-сокетио написан на гевенте
Egor
и опять же работать это будет только с тредингом, а с мультипроцессингом будет то же самое что щас у меня было
Anonymous
Что он юзает по дефолту?
Egor
хотя
Egor
да, гевент там есть в зависимостях
Egor
но чсх flask_socketio из-под мультипроцессинга у меня только с редисом завелся
Egor
Что он юзает по дефолту?
вот только так, в доке об этом прямо сказано - мол хотите мультипроцессинг - инициализируйте класс сокетио с внешним брокером сообщений
socketio = SocketIO(app, message_queue='redis://')
Egor
а патч для gunicorn, я вспомнил, как раз нужен чтобы gunicorn с flask_socketio подружить
Anonymous
Ладно
Aragaer
подозреваю происки роскомнадзора
c
Aragaer
да это я так, о своем
👑OGURCHIK🖤
🤔бан за дубликат
Anonymous
Pagespeed ругается на кэширование статики, как можно задать Cashe-Control в Django?
Denis
Dasha
initiator.name если мне память не изменяет
Коллеги, кто-то пользовался api github? Не удаётся создать функцию поиска по содержимому закрытого репозитория - выдаёт "Nothing found", хотя токен передан в запросе
alexcher
решить поссчитать сколько в питоне инструкций LOAD_*
alexcher
LOAD_CONST
LOAD_GLOBAL
LOAD_DEREF
LOAD_NAME
LOAD_FAST
LOAD_CLOSURE