вылетает вместе с разрывом сессии пользователя на серевере
А может это штатно? Ну типа, нет сессии - смысл в сокете?
Как пример. На стороне сервера, принудительно закрываем сокет,
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)
Возможно, станет понятней, куда копать.
Деталей маловато, чтобы кто то мог ответить.
А так, в основном, правильные заголовки решают. Если, в скриптах ошибок нет..
ваши 2 мега ужмутся до кило. (Утрированно)
не в ту сторону крутите.
alaev #:
Как сказал Delysid, у нас все готово к автономному интернету.
Осталось только создать очередное ведомство, которое повесит светофоры и камеры на подступах к Яндексу, чтобы контролировать трафик и создаст новые правила обмена пакетами во избежании браузерного ддоса сайта двумя потоками, с шаред прокси, с шириной канала до двух мегабит в идеальных условиях 😁😁😁
Если отсюда
<ТипыЦен> <ТипЦены> <Ид>b454a612-1d8d-17de-8840-*****</Ид> <Наименование>Оптовые</Наименование> <Валюта>руб</Валюта> <Налог> <Наименование>НДС</Наименование> <УчтеноВСумме>true</УчтеноВСумме> </Налог> </ТипЦены> <ТипЦены> <Ид>b564s612-1d8d-17de-8840-*****</Ид> <Наименование>Special</Наименование> <Валюта>руб</Валюта> <Налог> <Наименование>НДС</Наименование> <УчтеноВСумме>true</УчтеноВСумме> </Налог> </ТипЦены> </ТипыЦен>
, то да. Но, это 1с. И никто не запретит это использовать любой другой кмс или самопису.
Как вариант. Прокладка + тригер. На коленке.
import psycopg2from pprint import pprintconn = 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 любят ПС! подозреваю что Гугл ваш Битрикс недолюбливает
А какую любят? И как/чем это зафиксировано? И за что, конкретно?
Не всегда есть, связь. Бывает, нужды, ну или любой, приведут к тому, что ПС разлюбят.
ПС пофигу на CMS !
Абсолютно.
=====
А почем любовь/ненависть ПС?
На старом/новом, неспешно обсуждают https://developers.google.com/search/events/join-office-hours
На последней видеовстрече Мюллер отжег опять, раскрывая хитрости алгоритма google:
Почему скопированный контент может быть более релевантным, чем исходный?
Иногда исходный пост является не самым релевантным. Например, публикации в блоге Google и новости, использующие этот контент. В новостях он может быть дополнен другими деталями, что сделает их более релевантными для пользователей. Что касается оригинальности контента, то для Google важнее, как он соотносится с запросом пользователя.
Считаю, что кроме очевидных технических параметров, механизмы, позволяющие, даже неуникальный контент сделать более релевантными для пользователей, приблизят к статусу
А смысл, в тепличных условиях? Понятно, что без нагрузки разница +/- нихрена.
Можно и так. Но, к тому, что время выполнения PHP-скрипта от этого зависит, претензий нет?
Немного времени есть. Еще эксперимент. Та же метода. Грузим, смотрим время исполнения. Только 15000 запросов к сайту python+aiohttp
htop
Совсем немного процессов. 2 сокета + нгинкс воркеры.
Ну да, так и записано.
Результат выполнения консольного пыха
Разница есть, но не в 2 раза, как когда засрал машину php-fpm процессами.