小编Jan*_*iel的帖子

Flask和/或Tornado - 处理外部Web服务的耗时调用

我有一个烧瓶应用程序连接到给定URL到外部服务(具有不同但通常很长的响应时间)并在那里搜索一些东西.之后,对检索到的数据进行了大量的CPU操作.这也需要一些时间.

我的问题:来自外部的回应可能需要一些时间.你不能做很多事情,但当你同时有多个请求时它会成为一个大问题 - 对外部服务的烧瓶请求会阻塞线程,其余的则在等待.

明显浪费时间,它正在杀死应用程序.

我听说这个叫做Tornado的异步图书馆.还有我的问题:

  1. 这是否意味着它可以设法处理多个请求并在外部响应后立即触发回调?
  2. 我可以用我目前的烧瓶应用程序实现这一点(可能不是因为WSGI我猜?)或者我可能需要将整个应用程序重写为Tornado?
  3. 那些CPU繁重的操作怎么样 - 会阻塞我的线程吗?无论如何做一些负载平衡是一个好主意,但我很好奇Tornado如何处理它.
  4. 可能的陷阱,陷阱?

python multithreading web-services tornado flask

6
推荐指数
1
解决办法
2387
查看次数

为什么我不能做fmt.Sprintf("%d.%d.%d.%d",a ...)?

我正在学习Go并且我坚持参加Go tour(exercise-stringer.go:https://tour.golang.org/methods/7).

这是一些代码:

type IPAddr [4]byte  
// TODO: Add a "String() string" method to IPAddr.
func (a IPAddr) String() string {
    return fmt.Sprintf("%d.%d.%d.%d", a...)
}
Run Code Online (Sandbox Code Playgroud)

所以我的内心表现IPAddr[4]byte,所以传播运营商的作品.但是我得到了:

cannot use []string literal (type []string) as type []interface {} in argument to fmt.Sprintf
Run Code Online (Sandbox Code Playgroud)

有没有搞错?字符串切片也不起作用,这里发生了什么?

编辑:对不起,我的问题有一个错误 - 错误是关于类型IPAddr,而不是[]string.我正在玩代码而且我粘贴了错误的输出.无论如何,感谢peterSO0x434D53关于Go中切片的不变性.

嗯,这提出了另一个问题.为什么以这种方式实施?我想你只是有一些Iterable接口,所以任何实现它的结构都会"正常工作".

旁注:当我第一次听说Go时,这个大胆的陈述"已编译,但富有表现力".显式接口实现就是这方面的一个很好的例子,但是显式转换,缺少运算符重载等等都给了我"90s Java感觉".这很难过,因为Go看起来很棒.

go

6
推荐指数
2
解决办法
3636
查看次数

标签 统计

flask ×1

go ×1

multithreading ×1

python ×1

tornado ×1

web-services ×1