0

在我的 python 程序中,我试图使用 rpyc 库将服务器作为单独的进程启动。一旦我这样做,我希望能够连接到该服务器。由于该过程需要一些时间才能启动,因此我需要延迟连接它。我需要一些关于什么是最好的方法的建议。

目前我在启动进程后使用 time.sleep(10) 。假设 10 秒应该足以让服务器进程启动并准备好接受请求。这绝对不是万无一失的。

4

1 回答 1

0

您可能喜欢使用 gearman。在这里,您可以将工作人员作为服务器进程绑定在特定端口上。并向齿轮人客户提出要求。

由于 gearman worker 会伪装成守护进程,一旦它收到请求,它就会立即响应:

gearman worker(为您服务):

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 回答