编写优秀的 Twisted 网络资源

2024-02-07

我编写了第一个 Twisted 10.1.0 网络Resource我正在寻求反馈,因为我觉得这并不完全遵循最佳实践,并且可能包含新手错误。

资源响应/?url=http://www.foo.baz/abc123并依赖于返回的服务dict。如果出现任何问题(例如,无效或不存在url,那么一个400被返回)。

任何意见?任何需要修复、改进的地方

class ProcessedUrl(resource.Resource):
    isLeaf = True

    def __init__(self, service):
        resource.Resource.__init__(self)
        self.service = service

    def _cancel(self, err, deferred):
        deferred.cancel()

    def _write(self, value, request):
        request.setResponseCode(http.OK)
        request.write(json.dumps(value))
        request.finish()

    def _cleanUrl(self, url):
        return cleanUrl(url)

    def _checkUrl(self, url):
        if url is not None:
            if isValidUrl(url):
                return True
        return False

    def render_GET(self, request):
        request.setResponseCode(http.BAD_REQUEST)
        url = request.args.get('url', [None])[0]

        if self._checkUrl(url):
            url = self._cleanUrl(url)
            d = self.service.processUrl(url)
            request.notifyFinish().addErrback(self._cancel, d)
            d.addCallback(_write)
            d.addErrback(log.err)
        else:
            return 'Invalid or no URL.'
        return server.NOT_DONE_YET

    def getChild(self, name, request):
        return self

I think你不需要显式覆盖getChild()如果你设置isLeaf=True

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

编写优秀的 Twisted 网络资源 的相关文章

随机推荐

  • C++ 未打印字符串

    抱歉这个菜鸟问题 我是一名新手程序员 正在从 C 过渡到 C 我可以轻松地编写一个程序 以相同的方式用 C 语言反转字符串 只需进行一些细微的更改 但是用 C 编写此程序 为什么它不打印任何内容 include
  • 如何让 Nock 和 Mocha 协同工作?

    我正在尝试使用 nock 来拦截 模拟我的应用程序中的一些 HTTP 流量以进行测试 我们的应用程序对我们的另一个网站进行身份验证 我需要 nock 来模拟 HTTP 200 带有 JSON 数据 和 HTTP 401 没有数据 来测试用户
  • dotnet core 方法“ValidateOptions”...没有实现

    我正在构建一个 NET Core 解决方案 该解决方案构建得很好 但是当我尝试发布它时 它崩溃并出现以下错误 Method ValidateOptions in type Microsoft CodeAnalysis CSharp CSha
  • Google Play Alpha 测试 - 无可用更新

    我已经有一段时间没有更新我的 Android 应用程序了 现在我想使用 Alpha 测试来运行应用内购买功能的一些测试 问题是 我不知道如何使用 Play 商店在我的设备上安装 Alpha 版本 我做了以下事情 创建APK于Android
  • 更改嵌套在克隆表中的输入/选择字段的名称属性以进行动态表单输入 - Javascript

    我正在设计一个动态输入表单 它本质上充当用户 GUI 用于在 mysql 数据库中创建表 JavaScript var counter 0 function moreFields counter var newFields document
  • 如何在Python中初始化二维数组?

    我已经得到了伪代码 for i 1 to 3 for j 1 to 3 board i j 0 next j next i 我如何在 python 中创建这个 想法是使用 for 循环创建一个 3 x 3 数组 并将所有元素设置为 0 如果
  • GeoPandas 和 OSMnx - 在地图上绘制

    我想在地图上绘制我的 Geopandas df 作为背景 我想要该地区的 道路 地图 喜欢 OSMnx 包 我试图弄清楚如何使用它的输出 shapefile 网络 作为我的情节背景 import osmnx as ox G ox core
  • Response.Redirect 与 Server.Transfer - 重定向作为“建议”

    所以我读了一篇article http www csharpfriends com Articles getArticle aspx articleID 15在 Response Redirect 上 与 Server Transfer 相
  • iOS Facebook 获取用户的电子邮件

    我尝试了 2000 多种方法来获取用户的电子邮件 我无法从 Facebook SDK 的图形 API 获取它 它不包含电子邮件属性 我还尝试手动将电子邮件属性添加到 FB 框架 但没有任何反应 是否可以下载第一个与 iOS 7 兼容的 FB
  • R中如何合并表?

    我想这会有一个简单的答案 但我无法解决 这是一个使用的示例iris数据集 a lt table iris 2 b lt table iris 3 如何将这两个表添加到一起 例如 在新输出表中 变量 3 的值为 27 26 1 变量 3 3
  • 在 Tomcat 中使用 Spring 通过 JMX 公开 Hibernate(缓存)统计信息

    收集 Hibernate Ehcache 统计信息并在基于 Spring 的设置中通过 JMX 公开它们似乎很容易 互联网有很多资源可以帮助您 例如http snippets dzone com posts show 11159 http
  • 在bash中重复打印一个字符[重复]

    这个问题在这里已经有答案了 有没有办法在 bash 中重复打印相同的字符 就像您可以使用此构造在 python 中执行此操作一样 print 3 gives 实际上有一个单行代码可以做到这一点 printf 0 s 1 10 prints
  • VB6 .frm 文件格式属性无故更改!

    我们 我们的公司 注意到 在从不同用户 机器将代码签入到我们的存储库之间 VB6 表单文件内的 Format 属性不断变化 即使我们没有在 PC 上更改任何内容 之前 格式 82182147 之后 格式 69337091 它给我们的源代码比
  • 数据帧子集性能

    我有几个大型数据帧 100 万行以上 x 6 10 列 需要重复进行子集化 子集部分是我的代码中最慢的部分 我很好奇是否有办法更快地做到这一点 load https dl dropbox com u 4131944 Temp DF IOST
  • Pascal 对象:如何进行类型化前向声明?

    我正在将很棒的 fmod C 标头翻译为 Pascal 但由于前向声明而陷入困境 如果我声明该函数before类型 错误为 FMOD CODEC STATE 未知 如果我声明 FMOD CODEC STATEbefore该函数 错误为 FM
  • 如何在 CherryPy 中执行异步后处理?

    Context 想象一下您有一个标准的 CherryPy hello word 应用程序 def index self return Hello world index exposed True 并且您想要进行一些后处理 即记录请求处理或仅
  • 如何从命令行在 Ubuntu Linux 上打开 AVD 管理器?

    如何从命令行在 Ubuntu Linux 上打开 AVD 管理器 对于那些来这里是因为android avd命令已被弃用 现在的操作方法如下 使用Android Studio 使用有效的 studio 项目打开 Android Studio
  • XMPP 使用哪个端口?

    我搜索过但没有找到 XMPP 使用哪些端口 我需要实现XMPP服务器和客户端并使用XML传输 文件传输和流媒体 他们使用不同的端口吗 有没有办法让它们都一样使用 这样我就不需要打扰网络管理员 谢谢 根据维基百科 http en wikipe
  • 意外标记:LIMIT

    当我将上述依赖项与 NamedQuery 一起使用时 我在错误部分收到错误提示 注意 请指教 是jar问题还是JBOSS问题 我在 Jboss 7 版本中使用 jdk1 7 运行此代码 使用 EntityManager 使用命名查询 Que
  • 编写优秀的 Twisted 网络资源

    我编写了第一个 Twisted 10 1 0 网络Resource我正在寻求反馈 因为我觉得这并不完全遵循最佳实践 并且可能包含新手错误 资源响应 url http www foo baz abc123并依赖于返回的服务dict 如果出现任