timo-71

Рейтинг
63
Регистрация
19.09.2018
nezabor #:

вылетает вместе с разрывом сессии пользователя на серевере

А может это штатно? Ну типа, нет сессии - смысл в сокете?

Как пример. На стороне сервера, принудительно закрываем сокет,

await ws.send_str('Received  {%s}; tm: %.2f, %s' %  ( 
         msg.data, 
         ( (t1-t)*1000 ),            
         json.dumps(request['session']['user'], indent=2) ))
            
await ws.close(code=WSCloseCode.MESSAGE_TOO_BIG, message="MESSAGE_TOO_BIG")

На стороне клиента получаем:

sock.onclose = function (ev) {
    console.error('WebSocket closed!');
    console.log(ev.reason);

Попробуйте посмотреть таким образом.

console.log(ev)

Возможно, станет понятней, куда копать.


Консоль.


nezabor :
запилил я сокет сервер

веб сокеты?

Деталей маловато, чтобы кто то мог ответить.

А так, в основном, правильные заголовки решают. Если, в скриптах ошибок нет..






Delysid #:
В тексте не про ведомство, в тексте ведомство чтобы "чтобы контролировать трафик ".
🍺🍺Причинно следственные связи.  Если кто то начинает контролировать трафик.
Delysid #:
т.к. 2 мегабита уже у каждого пользователя

ваши 2 мега ужмутся до кило. (Утрированно)

Delysid #:
Прям непочатый край для психиатров.. 😆
Пока нет, только 1 вижу. И это вы.
Delysid #:
Может не мегабит а гигабит? А?

не в ту сторону крутите. 

alaev #:

Как сказал Delysid, у нас все готово к автономному интернету.

Осталось только создать очередное ведомство, которое повесит светофоры и камеры на подступах к Яндексу, чтобы контролировать трафик и создаст новые правила обмена пакетами во избежании браузерного ддоса сайта двумя потоками, с шаред прокси, с шириной канала до двух мегабит в идеальных условиях 😁😁😁

В случае ведомства, кило, а не мега и гига.
Aisamiery #:
В битре есть, кучи цен, кастомные цены и вообще там черт ногу сломит, чего там в коробке только нет, я даже не уверен что весь список знают сами разработчики =))

Если отсюда

<ТипыЦен>
                        <ТипЦены>
                                <Ид>b454a612-1d8d-17de-8840-*****</Ид>
                                <Наименование>Оптовые</Наименование>
                                <Валюта>руб</Валюта>
                                <Налог>
                                        <Наименование>НДС</Наименование>
                                        <УчтеноВСумме>true</УчтеноВСумме>
                                </Налог>
                        </ТипЦены>
                        <ТипЦены>
                                <Ид>b564s612-1d8d-17de-8840-*****</Ид>
                                <Наименование>Special</Наименование>
                                <Валюта>руб</Валюта>
                                <Налог>
                                        <Наименование>НДС</Наименование>
                                        <УчтеноВСумме>true</УчтеноВСумме>
                                </Налог>
                        </ТипЦены>
                </ТипыЦен>

, то да. Но, это 1с. И никто не запретит это  использовать любой другой кмс или самопису.

Как вариант. Прокладка + тригер. На коленке.

import psycopg2
from pprint import pprint

conn = psycopg2.connect(database='localdb', user='ххх',
password='ххх', host='localhost')
cursor = conn.cursor()

conditions = [
{
"value": "name_3",
"label": "tmp_condition",
"checked": True
},
{
"value": "name_1",
"label": "IF EXISTS up_conditions()",
"checked": True
},
{
"value": "name_7",
"label": "Demo",
"checked": False
}
]

print('\n===========Conditions')
pprint(conditions)

print('\n===========Default')
s = """
SELECT condition.*, form_conditions.* from condition
JOIN form_conditions
ON form_conditions.condition_id = condition.id;"""

cursor.execute( s )
for row in cursor.fetchall():
print(row)

cursor.execute('DROP TRIGGER IF EXISTS up_conditions ON tmp_tbl;')
cursor.execute('DROP FUNCTION IF EXISTS up_conditions();')
cursor.execute('DROP TABLE IF EXISTS tmp_tbl')
cursor.execute('''
create table tmp_tbl
(
id integer,
v varchar,
l varchar,
c boolean
);
''')

cursor.execute('''
CREATE FUNCTION up_conditions() RETURNS trigger AS $up_conditions$
BEGIN
UPDATE condition
SET display_name = NEW.l
WHERE name = NEW.v;
UPDATE form_conditions
SET is_checked = NEW.c
WHERE id = NEW.id;
RETURN NEW;
END;
$up_conditions$ LANGUAGE plpgsql;
''')

cursor.execute('''
CREATE TRIGGER up_conditions AFTER INSERT OR UPDATE ON tmp_tbl
FOR EACH ROW EXECUTE FUNCTION up_conditions();

''')

#======================


print('\n===========Tmp')
u = '''INSERT INTO tmp_tbl ( id, v, l, c ) VALUES
(
(SELECT id FROM condition WHERE name=%s),
%s, %s, %s );'''

for c in conditions:
cursor.execute(u, ( c['value'], c['value'], c['label'], c['checked']) )

conn.commit()

cursor.execute('select * from tmp_tbl')
for row in cursor.fetchall( ):
print(row)


print('\n===========Result')
cursor.execute(s)
for row in cursor.fetchall( ):
print(row)


cursor.close()
conn.close()
exit()

Результат:

(pyenv) [www@localhost ~]$ python /var/www/aweb/pyenv/pyd/scripts/pgtest.py

===========Conditions
[{'checked': True, 'label': 'tmp_condition', 'value': 'name_3'},
{'checked': True, 'label': 'IF EXISTS up_conditions()', 'value': 'name_1'},
{'checked': False, 'label': 'Demo', 'value': 'name_7'}]

===========Default
(1, 'name_1', 'Used 1', True, 1, 1, 1, True)
(2, 'name_2', 'Used 2', True, 2, 2, 2, True)
(3, 'name_3', 'Used 3', True, 3, 3, 3, True)
(4, 'name_4', 'Used 4', True, 4, 4, 4, True)
(5, 'name_5', 'Used 5', True, 5, 5, 5, True)
(6, 'name_6', 'Used 6', True, 6, 6, 6, True)
(7, 'name_7', 'Used 7', True, 7, 7, 7, True)
(8, 'name_8', 'Used 8', True, 8, 8, 8, True)
(9, 'name_9', 'Used 9', True, 9, 9, 9, True)

===========Tmp
(3, 'name_3', 'tmp_condition', True)
(1, 'name_1', 'IF EXISTS up_conditions()', True)
(7, 'name_7', 'Demo', False)

===========Result
(2, 'name_2', 'Used 2', True, 2, 2, 2, True)
(4, 'name_4', 'Used 4', True, 4, 4, 4, True)
(5, 'name_5', 'Used 5', True, 5, 5, 5, True)
(6, 'name_6', 'Used 6', True, 6, 6, 6, True)
(8, 'name_8', 'Used 8', True, 8, 8, 8, True)
(9, 'name_9', 'Used 9', True, 9, 9, 9, True)
(3, 'name_3', 'tmp_condition', True, 3, 3, 3, True)
(1, 'name_1', 'IF EXISTS up_conditions()', True, 1, 1, 1, True)
(7, 'name_7', 'Demo', True, 7, 7, 7, False)

ArmenDomain #:
пофиг какая "удобная CMS", главное какую CMS любят ПС! подозреваю что Гугл ваш Битрикс недолюбливает

А какую любят? И как/чем это зафиксировано? И за что, конкретно?

ArmenDomain #:
Думаю надо ставить то что может подправить любой программист под ваши нужды.

Не всегда есть, связь. Бывает, нужды, ну или любой, приведут к тому, что ПС разлюбят.

suffix #:

ПС пофигу на CMS !

Абсолютно.

=====

А почем любовь/ненависть ПС?

На старом/новом, неспешно обсуждают https://developers.google.com/search/events/join-office-hours


XPraptor  #19

На последней видеовстрече Мюллер отжег опять, раскрывая хитрости алгоритма google:

Почему скопированный контент может быть более релевантным, чем исходный?

Иногда исходный пост является не самым релевантным. Например, публикации в блоге Google и новости, использующие этот контент. В новостях он может быть дополнен другими деталями, что сделает их более релевантными для пользователей. Что касается оригинальности контента, то для Google важнее, как он соотносится с запросом пользователя.

Считаю, что кроме очевидных технических параметров, механизмы, позволяющие, даже неуникальный контент сделать более релевантными для пользователей, приблизят к статусу

самая удобная CMS интернет-магазина


Athens-2021 :
Самый первый текст на сайте должен быть заголовок h1, а потом идёт текст.
Мифы, они такие.
lealhost #:
Но в "экспериментах", вы просто грузите систему (процессор, диск, память) с одной стороны... и с другой запускаете скрипт, которому не предоставили ресурсы максимально быстро (как если бы это было при минимальной нагрузке). 

А смысл, в тепличных условиях? Понятно, что без нагрузки разница +/- нихрена.

lealhost #:
В 8 потоков с pbzip2, тогда будет и PHP-скрипт точно уж попадет в очередь

Можно и так.  Но, к тому, что время выполнения  PHP-скрипта от этого зависит, претензий нет?

Немного времени есть. Еще эксперимент. Та же метода. Грузим, смотрим время исполнения. Только 15000 запросов к сайту python+aiohttp

htop


Совсем немного процессов. 2 сокета + нгинкс воркеры.


Ну да, так и записано.


Результат выполнения консольного пыха


Разница есть, но не в 2 раза, как когда засрал машину php-fpm процессами.

Всего: 541