我注意到,在某些情况下(例如XHR请求),至少在OSX Google Chrome浏览器中,发送的请求标头和cookie从网络检查中消失了。
如果看不到我的意思,只需打开Web检查器并连接到您的Twitter帐户,然后检查XHR请求:您可以看到请求有效负载和响应标头,但发送的标头和cookie已消失。
任何想法如何解决这个问题?我试过在about:flags中激活一些奇异的标志,但是没有看到任何变化。
request-headers web-inspector http-headers google-chrome-devtools
我正在使用一个基本的记录器来跟踪我的程序正在做什么的终端,我注意到日志有时会延迟几秒钟或几分钟,甚至无缘无故地被跳过。
这是我的日志记录设置:
import logging
logging.basicConfig(
level=logging.WARNING,
format='%(asctime)s %(name)s %(levelname)s %(message)s'
)
logger = logging.getLogger(__name__)
logger.setLevel(logging.INFO)
Run Code Online (Sandbox Code Playgroud)
没什么特别的,这里是我使用记录器的代码示例,在按键事件之后,但在我决定处理事件之前发生了延迟:
if event.key == "c":
if self.mode != "clock":
logger.info("switching to clock mode")
self.mode = "clock"
self.gravitons = []
self.updateGravitonsKTree()
self.canShuffle = False
elif event.key == "f":
if self.mode != "free":
logger.info("switching to free mode")
self.mode = "free"
self.gravitons = []
self.updateGravitonsKTree()
(...)
Run Code Online (Sandbox Code Playgroud)
我确信只有记录器的输出被延迟或跳过,因为我可以看到程序的其余部分立即正常反应,所以我猜可能有一种缓冲区没有正确刷新,但我在日志记录模块的文档。
另外,在这个程序中,我使用了 matplotlib 动画,我怀疑它与这个问题有关,但我承认我不清楚为什么会出现这种情况以及如何出现这种情况。
有人经历过同样的事情吗?有没有办法“修复”它?
我想在执行期间激活或停用某个类方法中的“缓存”。
我找到了一种方法来激活它:
(...)
setattr(self, "_greedy_function", my_cache_decorator(self._cache)(getattr(self, "_greedy_function")))
(...)
Run Code Online (Sandbox Code Playgroud)
哪里self._cache是我自己的缓存对象,用于存储self._greedy_function.
它工作正常,但现在如果我想停用缓存并“取消装饰”_greedy_function怎么办?
我看到了一个可能的解决方案,_greedy_function在装饰它之前存储它的引用,但也许有一种方法可以从装饰函数中检索它,那会更好。
根据要求,这里是我用来缓存类函数结果的装饰器和缓存对象:
import logging
from collections import OrderedDict, namedtuple
from functools import wraps
logging.basicConfig(
level=logging.WARNING,
format='%(asctime)s %(name)s %(levelname)s %(message)s'
)
logger = logging.getLogger(__name__)
logger.setLevel(logging.INFO)
CacheInfo = namedtuple("CacheInfo", "hits misses maxsize currsize")
def lru_cache(cache):
"""
A replacement for functools.lru_cache() build on a custom LRU Class.
It can cache class methods.
"""
def decorator(func):
logger.debug("assigning cache %r to function %s" % (cache, func.__name__))
@wraps(func) …Run Code Online (Sandbox Code Playgroud)