0

私のpythonプログラムでは、rpycライブラリを使用してサーバーを別のプロセスとして起動しようとしています。それをしたらすぐに、そのサーバーに接続できるようにしたいと思います。プロセスの開始に時間がかかるため、接続を遅らせる必要があります。これを行うための最良の方法について、いくつかの提案が必要です。

現在、プロセスの開始後に time.sleep(10) を使用しています。サーバー プロセスが開始され、要求を受け入れる準備が整うには、10 秒で十分であると想定されています。これは間違いなく絶対確実ではありません。

4

1 に答える 1

0

あなたはギアマンを使いたいかもしれません。ここでは、サーバー プロセスとしてワーカーを特定のポートにバインドしたままにすることができます。そしてギアマンクライアントからの依頼。

ギアマン ワーカーはデーモン プロセスのように振る舞うため、リクエストを受け取るとすぐに応答します。

ギアマン ワーカー (あなたのためのサーバー):

import gearman

def check_request_status(job_request):
    if job_request.complete:
        print "Job %s finished!  Result: %s - %s" % (job_request.job.unique, job_request.state, job_request.result)
    elif job_request.timed_out:
        print "Job %s timed out!" % job_request.unique
    elif job_request.state == JOB_UNKNOWN:
        print "Job %s connection failed!" % job_request.unique

gm_client = gearman.GearmanClient(['localhost:4730'])

completed_job_request = gm_client.submit_job("reverse", "Hello World!")
check_request_status(completed_job_request)

ギアマン クライアント:

import gearman

gm_worker = gearman.GearmanWorker(['localhost:4730'])

def task_listener_reverse(gearman_worker, gearman_job):
    print 'Reversing string: ' + gearman_job.data
    return gearman_job.data[::-1]

# gm_worker.set_client_id is optional
gm_worker.set_client_id('python-worker')
gm_worker.register_task('reverse', task_listener_reverse)

# Enter our work loop and call gm_worker.after_poll() after each time we timeout/see socket activity
gm_worker.work()
于 2015-02-11T10:49:39.067 に答える