设计关节功能

2024-10-02 22:32:17 发布

您现在位置:Python中文网/ 问答频道 /正文

我有三个函数,每个函数在内部调用它下面的函数:

  • GetBitrateOverHTTP
  • GetFilesizeOverHTTP
  • 是服务器支持范围吗

每个函数都使用自己的HTTP请求。这意味着最后一个函数只使用一个HTTP请求,而第一个函数使用三个。你知道吗

GetBitrateOverHTTP函数只返回比特率。你知道吗

这些函数本身可以很好地工作,但是现在我想获得特定url的所有三个输出。你知道吗

我想了想:

  1. 调用所有函数。问题是我将发出6个HTTP请求,而不是3个。你知道吗
  2. 更改函数的定义以同时返回其他变量—但这并不能满足函数的基本目的—返回它要返回的内容。你知道吗
  3. 确定另一个不使用这些定义的函数,但是再次定义已经编码的东西似乎并不明智。你知道吗

有什么帮助吗?你知道吗


Tags: 函数目的服务器httpurl内容编码定义
2条回答

我实现了一个缓存选项。我创建了一个虚拟文件并导入了它。 然后我在每个函数的开头使用:

if hasattr(dummy, 'GetFileSize_cache'):
    if dummy.GetFileSize_cache.has_key(url):
        return dummy.GetFileSize_cache[url]
    else:
        dummy.GetFileSize_cache = {}

在回来之前:

dummy.GetFileSize_cache[url] = file_size

问题已解决:)

大致如下:

class RemoteFile(...):

     ...

     def getInfo(self):
         resp = self._do_that_http_request(self.remotepath)
         return RemoteFileInfo(resp)


class RemoteFileInfo(...):

     def __init__(self, resp):
          self.bitrate = self._getbitrate(resp)
          self.filesize = self._getfilesize(resp)


     ...

等等

相关问题 更多 >