Python, эквивалентный сети Java JNLP, Запускается?

Там какой-либо путь состоит в том, чтобы достигнуть той же функциональности в Python, т.е. запуска сценария от браузера и автоматически обновления его от центрального расположения сервера?

14
задан c00kiemonster 12 February 2010 в 00:52
поделиться

3 ответа

Находится на этой странице http://www.ppig.org/papers/11th-douce.pdf , на странице 6 документа описывается Объектная мера отношения или ORM и дается определение и способ ее вычисления. Думаю, это то, что ты ищешь.


Является ли это пространственной сложностью кода?

-121--3702133-

Я склоняюсь к тому, чтобы иметь таблицу основных действий. Если вы пойдете с этим, то это то, что я бы подумал реализовать:

  1. Вы можете создать несколько таблиц действий и сделать UNION ALL при извлечении данных из базы данных. Например, перекатывать их ежемесячно - activity_2010_02 и т.д. Просто на вашем примере - 200K пользователей x 100 друзей x 3 действия = 60 миллионов строк. Не касается производительности PostgreSQL, но вы можете рассмотреть это исключительно для удобства сейчас и в конечном итоге для легкости будущего расширения.

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

Вы собираетесь просмотреть весь канал операций, возвращающийся к началу времени? Вы не предоставили много подробностей в первоначальном вопросе, но я бы рискнул догадкой, что вы будете показывать последние 10/20/100 элементы, отсортированные по временной метке. Пары индексов и предложения LIMIT должно быть достаточно, чтобы дать мгновенный ответ (как я только что проверил на таблице с примерно 20 миллионами строк). Это может быть медленнее на занятом сервере, но это то, что должно быть разработано с аппаратными и кэшированием решений, Postgres не будет узким местом там.

Даже если вы предоставляете каналы активности, возвращающиеся на рассвет времени, разбейте на страницы выходные данные! Предложение LIMIT сохранит вас там. Если базового запроса с параметром LIMIT недостаточно или если пользователи имеют длинный список друзей, которые больше не активны, можно рассмотреть возможность ограничения поиска до последнего дня/недели/месяца сначала и затем предоставить список идентификаторов друзей:

select * from activity 
  where ts <= 123456789 
    and source_user in (1, 2, 44, 2423, ... my friend list)

Если имеется таблица, охватывающая месяцы или годы назад, поиск идентификаторов друзей будет выполняться только в строках, выбранных первым предложением WHERE.

Это просто если я выберу между двумя решениями, которые вы рассматриваете сейчас. Я бы также посмотрел на такие вещи, как:

  1. Пересматривайте вашу денормализацию таблицы. Действительно ли наилучшим способом является хранение предварительно сгенерированных выходных данных HTML? Будет ли вам лучше с точки зрения производительности, если вместо этого будет создана таблица поиска действий, а на лету будут создаваться шаблонные выходные данные? Предварительно сгенерированный HTML может казаться лучше с самого начала, но в конце концов такие вещи, как дисковое хранилище, API, будущие изменения макета и хранение HTML, могут быть не так привлекательны. Таблица поиска может содержать возможные действия - добавление друга, изменение статуса и т. д., и журнал действий будет ссылаться на это и идентификатор друга, если в действии участвует другой пользователь.

  2. Выполнение предварительного создания HTML,но не сохраняет его в базе данных. Сохраните материалы на диске как предварительно созданные страницы. Это не серебряная пуля, однако, и во многом зависит от соотношения записи и чтения на вашем сайте. То есть типичный дискуссионный поток на общественном форуме мог иметь десяток сообщений, но его можно было посмотреть сотни раз - хороший кандидат на кэширование. Тогда как если ваше приложение более настроено на немедленные обновления состояния и вам придется заново создавать HTML-страницу и сохранять ее снова на диске после каждой пары просмотров, то в этом подходе мало что стоит.

Надеюсь, это поможет.

-121--2587412-

Запустите приложение на Jython и используйте Java Web Start?

В комментарии ниже, http ://blog.pyproject.ninja/posts/2016-03-31-web-start-on-jython.html , приведен полный пример.

Обратите внимание, что Jython не Python - некоторые вещи не работают, и особенно Jython только Python-2.7 совместим.

8
ответ дан 1 December 2019 в 15:01
поделиться

Одним из очень важных факторов, учитывающих производительность служб IIS или Windows для WCF, является тип привязки. IIS поддерживает только привязки WCF, которые функционируют через HTTP, например, wsStartBinding . basicStartBinding и т. д.

Обычно известно, что привязки, не связанные с HTTP, имеют более высокую производительность, например, netStartBinding (требуется, чтобы служба и клиент были на основе WCF. Я полагаю) или netNamedPipeBinding (самый быстрый, но служба/клиент должен быть на одном компьютере). Они, конечно, имеют свои собственные ограничения, особенно с гибкостью.

Вот хороший обзор: http://weblogs.asp.net/spano/archive/2007/10/02/choosing-the-right-wcf-binding.aspx

Здесь было очень похожее обсуждение: WCF Binding Исполнения

-121--4903766-

Хотя AWT должен быть потоковым, на самом деле это не так. Поэтому я предлагаю, как и Swing, выполнять все манипуляции с графическим интерфейсом в потоке отправки событий AWT (EDT).

Для этой конкретной задачи javax.swing.Timer должен выполнить эту задачу. (Хотя он находится в пакете javax.swing , в нем нет ничего специфичного для Swing.)

Также я настоятельно рекомендую не расширять классы, если вы действительно не должны. Существует очень мало причин для расширения Thread или Frame (к сожалению, существует много плохих примеров и старых учебных пособий).

-121--3653411-

Ну это все еще не полное совпадение особенностей JNLP, но, возможно, esky ближе к тому, что вы хотите. Он не основан на браузере, но после установки приложения на клиенте может обновиться. Кроме того, в кроссплатформенном отделе может отсутствовать что-либо в зависимости от среды YMMV.

Другой альтернативой может быть структура Дабо в dabodev.com. Прошло несколько лет с тех пор, как я посмотрел на это, но все еще похоже, что он жив: -)

2
ответ дан 1 December 2019 в 15:01
поделиться

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

Посмотрите эту страницу вики по python, там описаны различные варианты.

1
ответ дан 1 December 2019 в 15:01
поделиться
Другие вопросы по тегам:

Похожие вопросы: