我试着在python中获得whois.我使用这个 http://code.google.com/p/pywhois/ 但它只在linux中运行.在Windows上运行它是否可行?目前我得到错误(因为内部linux命令whois使用)
我有一些任务存储在db中供以后执行.例如,我可以修复发送电子邮件的任务.并通过cron exec任务(发送它).我搜索在db中存储代码以便以后执行的最佳方法.对于ex存储它的原始字符串的python代码,而不是eval,但我也必须在这里存储相对导入..
例如,对于发送电子邮件,我必须修复这样的字符串:
s ="来自django.core.mail import send_mail \n send_mail('subj','body','email @ box.ru',['email1@box.ru'],fail_silently = False)"
以后eval ..任何想法做到最好的方式或更好的模式这种任务?
我的gunicorn + django 1.5.1 + mysqldb中有内存泄漏.我开始用gc和objgraph探索我的代码
当gunicorn工人超过300mb我收集了一些统计数据:
data['sum_leak'] = sum((getsizeof(o) for o in objgraph.get_leaking_objects())) #2 mb
data['total_objects_length'] = sum((getsizeof(o) for o in gc.get_objects())) #6 mb
Run Code Online (Sandbox Code Playgroud)
因此,只有2 + 6 = 8 mb,而gunicorn工人超过300 mb.
所以我觉得问题不在python代码中,而是更深层次.
我有:gunicorn == 0.17.2 mysqldb == 1.2.4
我通过pip install将whem更新为19.0.0和1.2.5,但pip frreze显示旧版本,而gunicorn -v和mysqldb.version_info显示最后更新.
所以我想如何全部重新安装gunicorn和mysqldb以避免它完全删除旧的(可能是一些旧的基本问题)?
我也得到了pmap的一些信息:
pmap -x 805
805: /usr/bin/python /usr/local/bin/gunicorn engine.wsgi:application -b 127.0.0.1:9005 --workers=2
Address Kbytes RSS Dirty Mode Mapping
08048000 0 1444 0 r-x-- python2.7
0829e000 0 4 4 r---- python2.7
0829f000 0 204 120 rw--- python2.7
082f4000 …Run Code Online (Sandbox Code Playgroud) 在 haskell IO 类型中有 Monoid 的实例:
instance Monoid a => Monoid (IO a) where
mempty = pure empty
Run Code Online (Sandbox Code Playgroud)
如果我有三个共享某个状态的操作,并通过副作用改变彼此的行为,从 IO 类型的角度来看,这可能会导致违反关联律:
a1:: IO String
a2:: IO String
a3:: IO String
Run Code Online (Sandbox Code Playgroud)
(a1 mappenda2) mappenda3 /= a1 mappend(a2 mappenda3)
例如,如果 a1,a2,a3 请求字符串中的当前时间,或者 IO 包含一些计算请求编号的 DB。这意味着它可以是:
(a1 `mappend` a2) `mappend` a3 == "1"++"2"++"3"
a1 `mappend` (a2 `mappend` a3) == "3"++"1"++"2"
Run Code Online (Sandbox Code Playgroud)
编辑:
我想我不应该用 db 举一个例子,它很困惑,更喜欢的例子:
a1 = show <$> getUnixTime
a2 = show <$> getUnixTime
a3 = show <$> getUnixTime …Run Code Online (Sandbox Code Playgroud) 例如,如果我们有两个字符串"abc"并且"1234"我想要结果"abc4"(第一个字符串掩码第二个)。(如果我们将它们垂直绘制,就像波浪从左侧传来并拉动字符)
"a" "1" "a"
wave -> "b" "2" result "b"
"c" "3" "c"
"4" "4"
Run Code Online (Sandbox Code Playgroud)
我从 Haskell 的解决方案开始
slice from to xs = take (to - from + 1) (drop from xs)
merge l1 l2 = if length l2 > length l1
then l1 ++ slice (length l1) (length l2) l2
else l1
Run Code Online (Sandbox Code Playgroud)
您能提供一些更优雅\紧凑的解决方案吗?
默认的django缓存密钥生成器:
def make_key(key, key_prefix, version):
return ':'.join([key_prefix, str(version), key])
Run Code Online (Sandbox Code Playgroud)
我想改变:
在settings.py中
def make_key(key, key_prefix, version):
return key
CACHES = {
'default': {
'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache',
'LOCATION': '127.0.0.1:11211',
'KEY_FUNCTION' : 'settings.make_key',
}
}
Run Code Online (Sandbox Code Playgroud)
但是django用旧的本机函数(prefix-version-key)生成密钥如何更改呢?