Browse Source

修复了threadpool的一个严重错误

master v0.0.16
realxlfd 3 months ago
parent
commit
5851c13f9b
  1. 2
      net/apis/ym/utils.go
  2. 6
      net/utils/crawler/driver.go
  3. 18
      net/utils/crawler/parser.go
  4. 2
      utils/file/decompressor/exec.go
  5. 2
      utils/file/fo/move.go
  6. 3
      utils/threadpool/pool.go

2
net/apis/ym/utils.go

@ -66,7 +66,7 @@ func CommonVerify(imgBase64 string, method int) (result string, errs []error) {
v := &RespCommonVerify{}
err := json.Unmarshal([]byte(body), v)
if err != nil {
return result, []error{errors.New(`server can not parse image data`)}
return result, []error{fmt.Errorf(`can not parse data: %s`, body)}
}
if v.Code != 10000 {
return result, []error{fmt.Errorf(`server error: %s`, v.Msg)}

6
net/utils/crawler/driver.go

@ -20,7 +20,11 @@ type Crawler struct {
state State
}
func Init(chromeDriverPath string, Port int, headless bool) (*Crawler, error) {
var (
Port = 9515
)
func Init(chromeDriverPath string, headless bool) (*Crawler, error) {
opts := []selenium.ServiceOption{
selenium.ChromeDriver(chromeDriverPath), // 指定 ChromeDriver 路径
selenium.Output(nil), // 输出日志到 os.Stderr

18
net/utils/crawler/parser.go

@ -269,6 +269,21 @@ func toMode(actions []Action, driver selenium.WebDriver) *Mode {
return err
},
)
case HOVER:
executor = append(
executor, func() error {
if mode.Selected == nil {
return errors.New("no selected element")
}
for _, e := range mode.Selected {
err := e.MoveTo(0, 0)
if err != nil {
return err
}
}
return nil
},
)
default:
panic("unhandled default case")
}
@ -342,6 +357,8 @@ func parseOperation(line string) (actions Action, err error) {
switch mark {
case "CLICK":
return Action{Act: CLICK}, nil
case "HOVER":
return Action{Act: HOVER}, nil
default:
return actions, fmt.Errorf("unknown operation: %s", line)
}
@ -400,6 +417,7 @@ const (
SETCOOKIE
VERIFY
WINDOW
HOVER
)
const (
ModeNLP6 = 10104

2
utils/file/decompressor/exec.go

@ -10,7 +10,7 @@ import (
"strings"
)
func DCom(src string, dst string, passwords ...string) error {
func Decompress(src string, dst string, passwords ...string) error {
stat, err := os.Stat(src)
if err != nil {
return err

2
utils/file/fos/move.go → utils/file/fo/move.go

@ -1,4 +1,4 @@
package fos
package fo
import (
"io"

3
utils/threadpool/pool.go

@ -76,8 +76,6 @@ func (p *Pool) Run() {
if !ok {
break
}
// 使用sync.WaitGroup用以完成等待
p.group.Add(1)
atomic.AddInt32(
&p.current,
1,
@ -139,6 +137,7 @@ func (p *Pool) Push(f func()) (err error) {
// add 添加任务的具体实现
func (p *Pool) add(f func()) {
p.queue <- f
p.group.Add(1)
atomic.AddInt32(
&p.queueCurrent,
1,

Loading…
Cancel
Save