Используйте <meta charset="utf-8" />
для веб-браузеров при использовании HTML5.
Используйте <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
при использовании HTML4 или XHTML или для устаревших парсеров dom, например DOMDocument в php
Я посмотрел на несколько способов решить эту проблему, и безусловно самое изящное описано здесь: https://seattle.cs.washington.edu/browser/seattle/trunk/demokit/timeout_xmlrpclib.py? rev=692
техника была первоначально представлена здесь, но эта ссылка является битой: http://blog.bjola.ca/2007/08/using-timeout-with-xmlrpclib.html
Это работает с Python 2.5 и 2.6. Новая ссылка утверждает, что работала с Python 3.0 также.
Вот дословная копия от http://code.activestate.com/recipes/473878/
def timeout(func, args=(), kwargs={}, timeout_duration=1, default=None):
import threading
class InterruptableThread(threading.Thread):
def __init__(self):
threading.Thread.__init__(self)
self.result = None
def run(self):
try:
self.result = func(*args, **kwargs)
except:
self.result = default
it = InterruptableThread()
it.start()
it.join(timeout_duration)
if it.isAlive():
return default
else:
return it.result
Более простое решение находится по адресу: http://www.devpicayune.com/entry/200609191448
import xmlrpclib
import socket
x = xmlrpclib.ServerProxy('http:1.2.3.4')
socket.setdefaulttimeout(10) #set the timeout to 10 seconds
x.func_name(args) #times out after 10 seconds
socket.setdefaulttimeout(None) #sets the default back
Я не знаю, почему вы даже пытаетесь сравнить их с делами. null
означает, что какой-либо столбец пуст или не имеет значения, в то время как значение по умолчанию дает столбцу некоторое значение, если мы не задаем его непосредственно в запросе.
Может быть, какой-то пример будет лучшим объяснением. Допустим, у нас есть таблица членов
. Каждый участник имеет идентификатор и имя пользователя. Необязательно, у него может быть адрес электронной почты (но он не обязан). Кроме того, каждый член имеет столбец postCount (который увеличивается при каждой записи сообщения пользователем). Таким образом, столбец электронной почты может иметь значение null
(поскольку электронная почта является необязательной), в то время как столбец postCount имеет значение NOT NULL
, но имеет значение по умолчанию 0
(поскольку при создании нового члена у него нет записей).
Используйте List < T > .Sort ()
и убедитесь, что у вас есть соответствующий компаратор.
чистая неглобальная версия.
import xmlrpclib
import httplib
class TimeoutHTTPConnection(httplib.HTTPConnection):
def connect(self):
httplib.HTTPConnection.connect(self)
self.sock.settimeout(self.timeout)
class TimeoutHTTP(httplib.HTTP):
_connection_class = TimeoutHTTPConnection
def set_timeout(self, timeout):
self._conn.timeout = timeout
class TimeoutTransport(xmlrpclib.Transport):
def __init__(self, timeout=10, *l, **kw):
xmlrpclib.Transport.__init__(self, *l, **kw)
self.timeout = timeout
def make_connection(self, host):
conn = TimeoutHTTP(host)
conn.set_timeout(self.timeout)
return conn
class TimeoutServerProxy(xmlrpclib.ServerProxy):
def __init__(self, uri, timeout=10, *l, **kw):
kw['transport'] = TimeoutTransport(
timeout=timeout, use_datetime=kw.get('use_datetime', 0))
xmlrpclib.ServerProxy.__init__(self, uri, *l, **kw)
if __name__ == "__main__":
s = TimeoutServerProxy('http://127.0.0.1:9090', timeout=2)
s.dummy()
На основе версии от antonylesuisse, рабочей версии (на python> = 2.6).
# -*- coding: utf8 -*-
import xmlrpclib
import httplib
import socket
class TimeoutHTTP(httplib.HTTP):
def __init__(self, host='', port=None, strict=None,
timeout=socket._GLOBAL_DEFAULT_TIMEOUT):
if port == 0:
port = None
self._setup(self._connection_class(host, port, strict, timeout))
class TimeoutTransport(xmlrpclib.Transport):
def __init__(self, timeout=socket._GLOBAL_DEFAULT_TIMEOUT, *args, **kwargs):
xmlrpclib.Transport.__init__(self, *args, **kwargs)
self.timeout = timeout
def make_connection(self, host):
host, extra_headers, x509 = self.get_host_info(host)
conn = TimeoutHTTP(host, timeout=self.timeout)
return conn
class TimeoutServerProxy(xmlrpclib.ServerProxy):
def __init__(self, uri, timeout=socket._GLOBAL_DEFAULT_TIMEOUT,
*args, **kwargs):
kwargs['transport'] = TimeoutTransport(timeout=timeout,
use_datetime=kwargs.get('use_datetime', 0))
xmlrpclib.ServerProxy.__init__(self, uri, *args, **kwargs)