「人間のためのHTTP」Requestsでオレオレ証明書かつベーシック認証を突破する

2015-08-14
このエントリーをはてなブックマークに追加

Requests は「人間のためのHTTP」という謳い文句のhttpライブラリ。確かにとても便利。Python3であれば http.client 使えばいいんですけど、ついついRequestsを使ってしまう。

_response = requests.get(
     'https://TARGET_URL',
     auth=('user_name', 'passwd'),
     verify=False
)

auth=の部分がベーシック認証、verify=Falseがオレオレ証明書の許容。これだけです。簡単。

まあ、

InsecureRequestWarning: Unverified HTTPS request is being made. Adding certificate verification is strongly advised.

ってWarning吐きまくってるんですけどね。

Requestsが動くならPython2でも3でも動くはずです。

Pythonでジョブキューしてみる

2015-08-02
このエントリーをはてなブックマークに追加

PythonでジョブキューするといえばやっぱりCeleryがスタンダードなんだろうか。RQというシンプルなジョブキューライブラリもあるんですけど、今回はCeleryを動かしてみる。

インストールは簡単。

pip install Celery

バックエンドはRabbitMQかRedisで使うのが良さそうです。手元の環境にRedisが入っていたのでそのままRedisを使ってみます。

from celery import Celery

app = Celery('tasks', broker='redis://localhost:6379/0')

@app.task
def task(message):
    return "Hello {0}".format(message)

上記をjob.pyとして保存しておきます。で、このjob.pyをワーカーとして起動。このワーカーがデキューしてくれます。

$ celery -A job worker --loglevel=info

いろいろログを出力して起動してくれます。ワーカーの起動はいろいろオプションがあります。デーモンとして動かしたり並列で大量に立ち上げたり。非常に便利。

で、エンキューはもうインタラクティブシェルでもできます。

$ python
Python 3.4.2 (default, Oct 16 2014, 01:53:40)
[GCC 4.4.7 20120313 (Red Hat 4.4.7-4)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> from job import task
>>> task.delay("World.")

エンキューもこれだけ。
で、エンキューするとさっき立ち上げたワーカーの方でデキューしてジョブを捌いてくれます。

succeeded in 0.0014186919997882796s: 'Hello World.'

こんな簡単にジョブキューの仕組みが作れるなんて。