Что я использую:
class Enum(object):
def __init__(self, names, separator=None):
self.names = names.split(separator)
for value, name in enumerate(self.names):
setattr(self, name.upper(), value)
def tuples(self):
return tuple(enumerate(self.names))
, Как использовать:
>>> state = Enum('draft published retracted')
>>> state.DRAFT
0
>>> state.RETRACTED
2
>>> state.FOO
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'Enum' object has no attribute 'FOO'
>>> state.tuples()
((0, 'draft'), (1, 'published'), (2, 'retracted'))
, Таким образом, это дает Вам целочисленные константы как состояние. ОПУБЛИКОВАННЫЙ и два кортежа для использования в качестве выбора в моделях Django.
Согласно RFC 2068:
«Клиенты, использующие постоянные соединения, ДОЛЖНЫ ограничить количество одновременные соединения, которые они поддерживают с данным сервером. А однопользовательский клиент ДОЛЖЕН поддерживать, как минимум, 2 соединения с любыми сервер или прокси. Прокси-сервер ДОЛЖЕН использовать до 2 * N подключений к другому сервер или прокси, где N - количество одновременно активных пользователей. Эти рекомендации предназначены для улучшения времени ответа HTTP. и избежать перегрузки Интернета или других сетей ».
Windows, безусловно, применяет это ограничение во всей операционной системе, но вы можете исправить это, изменив ключи реестра, расположенные по адресу:
My Computer \ HKEY_USERS (current user sid) \ Software \ Microsoft \ Windows \ CurrentVersion \ Internet Setting \
Ключи, которые нужно изменить:
MaxConnectionsPer1_0Server MaxConnectionsPerServer
Вы можете установить для них значения, превышающие значения по умолчанию, чтобы увеличить ограничение Windows. Однако это зависит от ОС и может по-прежнему ограничиваться браузером, хотя, как указывает Энтони, вы можете обойти браузер вместе, используя новый сетевой стек в SL3.
Я думаю, что хорошо играть со спецификацией RFC (I Я уверен, что для этого была веская причина) и ограничьте количество одновременных подключений до 2 на сервер. Если вам нужно больше, то, возможно, вы можете поискать протокол, отличный от HTTP, который лучше соответствует вашим потребностям.
SL будет используйте http-стек браузеров для выполнения запросов (в SL3 вы можете пропустить сам браузер, но вы все равно будете использовать стек на стороне клиента, такой как WinINET, который все еще ограничен).
Сейчас я не могу дать точного ответа на ваш вопрос, но Silverlight 2 использует стек HTTP браузера и, вероятно, ограничен тем, что он будет делать. В Silverlight 3 у вас есть выбор между стеком браузера и новым стеком Silverlight. Я не знаю, ограничен ли новый стек двумя одновременными подключениями к одному и тому же сайту, но это должно быть возможно проверить, создав небольшую тестовую программу.