sogou / pyworkflow

Python异步任务编排框架。支持http,redis和MySQL异步任务,异步文件IO。Python下最快的http server之一。

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

My project based on PyWorkflow

cfhamlet opened this issue · comments

commented

Hi guys, I have created a project os-pywf which wrap the PyWorkfow provide high level APIs and command line tools.
I have released Requets like APIs and provide a command line tool same as curl but more flexible work with Python scripts.
My project can be installed with pip

pip install os-pywf

During developing, I find some features depond on PyWorkflow, need your help

  • HttpTask do not support proxies
  • I do not konw how to add client cert when using HttpTask
  • Running task can not cancel, so on some situation (slow response for example) I have to force quit the program or wait a long time

To use http proxy, you may create an http task with proxy's URL like this: http://proxy-host-name:port/ ,set the request URI: task.get_req().set_request_uri("http://www.sogou.com/"), and then set the "Host" header: task.get_req().set_header_pair("Host", "www.sogou.com")
Unfortunately we do not support https proxy currently.

commented

Thanks, let me have a try

commented

To use http proxy, you may create an http task with proxy's URL like this: http://proxy-host-name:port/ ,set the request URI: task.get_req().set_request_uri("http://www.sogou.com/"), and then set the "Host" header: task.get_req().set_header_pair("Host", "www.sogou.com")
Unfortunately we do not support https proxy currently.

It works. Expect solution for https proxy.

GOOD NEWS

pyworkflow support visit http(s) server with http proxy now ( #19 )

you can use it as simple as normal http tasks

import pywf as wf

def http_callback(t):
    if t.get_state() != wf.WFT_STATE_SUCCESS:
        print(wf.get_error_string(t.get_state(), t.get_error()))
        return

    resp = t.get_resp()
    print("{} {} {}".format(
        resp.get_http_version(), resp.get_status_code(), resp.get_reason_phrase()
    ))

task = wf.create_http_task(
    url = "https://www.sogou.com/",
    proxy_url = "http://user:passwd@your.proxy:port", # Your http proxy here
    redirect_max = 2,
    retry_max = 2,
    callback = http_callback)
task.start()
wf.wait_finish()
commented

@kedixa Good job, it's GREAT.