Anonymous
поток multiprocessing и поток из threading завершаются одинаковым образом?
Anonymous
Если я через signal укажу функцию шатдауна для Thread, сработает ли это?
AMD Chan
с промежуточным сервером, статистикой из игр, которая кидается на амазон, планшетом, который отправляет команды. я бы ее вообще переписал, но других тасков хватает. когда плюсовому программисту дают таск написать софт на абсолютно чуждом для тебя языке. где хотя-бы даже по синтаксису разница космическая.
B
Если вы плюсовик, то делайте на flask + redis/memcache + cron. Можно, конечно, переписать все с использованием асинхронного подхода, но это будет слишком для новичка в языке, так считаю.
Anonymous
Tishka17
эм сигнал отправляется процессу
B
Thread'у так же отправляются SIGINT SIGTERM SIGKILL?
Это вопрос больше не функциональности питона, а реализации потоков. Поищите по ключевому слову POSIX threads.
Tishka17
на врем яобработки сигнала, насколько я помню, все треды останавливаются
Anonymous
Это вопрос больше не функциональности питона, а реализации потоков. Поищите по ключевому слову POSIX threads.
На сколько я знаю, Thread это не совсем поток, а какая-то питоновская приколюха
Anonymous
на врем яобработки сигнала, насколько я помню, все треды останавливаются
Так вот мне нужно чтобы каждый поток выполнял свою подготовку к шатдауну
Tishka17
Так вот мне нужно чтобы каждый поток выполнял свою подготовку к шатдауну
Выставляешь глобальный флаг, всем говоришь "эй, завершайтесь"
Anonymous
Один/два их них это FUSE
Anonymous
https://github.com/fusepy/fusepy
Tishka17
Ух
Tishka17
Сурово
Tishka17
Для всех потоков так не выйдет
Ну короче, по сигналу сам себе говоришь что надо завершиться и завершашь всё нормальным способом
Anonymous
Anonymous
Посмотрим что можно сделать
B
с промежуточным сервером, статистикой из игр, которая кидается на амазон, планшетом, который отправляет команды. я бы ее вообще переписал, но других тасков хватает. когда плюсовому программисту дают таск написать софт на абсолютно чуждом для тебя языке. где хотя-бы даже по синтаксису разница космическая.
В общем, картина видится такая. Обработкой гет запросов занимается один тред. Когда удаленные сервера не работают (порт не слушается) контрольный сервер сразу получает TCP reset, что приводит к исключению, завершению работы get_status и отдаче пустого ответа. Когда появляется удаленный сервер, возможно он отвечает на запрос контрольного сервера довольно долго (какое там тело ответа кстати?), в результате исполнение блокируется. GIL при этом отпустится, но процессор будет занят интерпретатором питона, так думаю. Соответственно в профайлере должно на первом месте быть ожидание ввода -вывода или чтение из сокета. Долгие синхронные запросы + один поток = наблюдаемая ситуация.
B
В общем, картина видится такая. Обработкой гет запросов занимается один тред. Когда удаленные сервера не работают (порт не слушается) контрольный сервер сразу получает TCP reset, что приводит к исключению, завершению работы get_status и отдаче пустого ответа. Когда появляется удаленный сервер, возможно он отвечает на запрос контрольного сервера довольно долго (какое там тело ответа кстати?), в результате исполнение блокируется. GIL при этом отпустится, но процессор будет занят интерпретатором питона, так думаю. Соответственно в профайлере должно на первом месте быть ожидание ввода -вывода или чтение из сокета. Долгие синхронные запросы + один поток = наблюдаемая ситуация.
Если надо хоть как-то исправить прямо сейчас, дайте больше тредов серверу на случай конкуррентных запросов и используйте треды или асинхронность для опроса серверов.
AMD Chan
тела ответа нет, он смотрит только на код ответа
AMD Chan
нет, 5-10 мсек
AMD Chan
хм, я вот сейчас думаю. я убрал постоянное получение списка активных пк, но при этом загрузка осталась
Anonymous
Как ни странно, мой запрос почему-то ничего не возвращает...
Anonymous
mydbc.execute("Select * from user where id=%s",(int(id1),)) check_val=0 """check for show message start ot show main menu/// if =1 than show all message, else 0 show menu""" for row in mydbc.fetchall(): print(row[0])
AMD Chan
AMD Chan
Anonymous
отдельные подпроцессы
Anonymous
наследники остались
Dogma
Опять люди путают теплое с маслом
Anonymous
а ты файлы закрыл? может в этом проблема
Dogma
Жсон и строковое представление словаря не одно и тоже. Из мелочей
B
Тут четыре процесса интерпретатора питона, уверены что процессор потребляет именно код сервера? В принципе, если другого кода немного, можно перенести как есть на flask. Изменится только код main и код эндпоинта. У flask более очевидные способы задать мультитрединг и т.д.
Tishka17
на питоне?
Anonymous
а такой id в базе есть?
нет, а как можно получить сведения мол запрос тру или нет
Tymur
на питоне?
Там про общие концепции. Можно и на питоне :)
Tishka17
можешь посчитать сколько вывел
Tishka17
а вообще с курсоре есть число найденных записей
Tishka17
лол "как вы уже видите, разработка игр не настолько простая как казалась на первый взгляд"
Tishka17
омг
Anonymous
sok=mydbc.fetchall()
Anonymous
ну смотри
Anonymous
я в sok получаю что-либо?
Anonymous
нашел пример
Anonymous
import pymysql pymysql.install_as_MySQLdb() import MySQLdb db= MySQLdb.connect("hostname", "username", "password", "database_name") cursor= db.cursor() number_of_rows= cursor.execute("SELECT * FROM Table_name) # enter the table name
Tishka17
sok=mydbc.fetchall()
ну будет список. Например пустой
Anonymous
mydbc.execute("Select * from user where `id`=%s",(int(id1),)) check_val=0 sok=mydbc.fetchall() """check for show message start ot show main menu/// if =1 than show all message, else 0 show menu""" if sok is None: check_val=1
Anonymous
ну получается что сок вообще пустой
Anonymous
или тип того
Anonymous
он не нон
Tishka17
да не None будет
Tishka17
пустой спислк
Anonymous
empty
Anonymous
юзать?
Tishka17
ты в курсе что такое пустой список?
Anonymous
сработало
Anonymous
спс.)
Anonymous
if sok not:
Anonymous
не подумал что он может возвращать список, думал должен выбрасывать ошибку если не то
Anonymous
)
Anonymous
*пустой
Tishka17
ну почему же. "найдено 0 записей" ничем особо не отличаеся от "найдено 1000 зписей"
Tishka17
а вот "не смог выполнить запрос" - это уже другое
Anonymous
commit() что дает этот метод?
Sasha
Коммитит)
Anonymous
для бд
nacknime
commit() что дает этот метод?
Применяет все изменения
Sasha
Почитайте про транзакции в бд, это в целом общие знания, которые будут полезны новичку
Anonymous
Я ранее работал с бд, теперь смотрю как это реализовано с питоном
Tishka17
Есть тут датасаентологи? Как мне за минимум кода кластеризовать массив 240-размерных векторов?
Андрей
0о
Tishka17
да, хочется взять готовый алгоритм и посомтреть что выыйдет
Дмитрий
ну условно