在我的python程序中,我试图使用rpyc库作为一个单独的进程启动服务器。一旦我这样做,我希望能够连接到该服务器。由于启动过程需要一些时间,因此我需要延迟连接。我需要一些关于最佳方法的建议。
目前我在启动过程后使用time.sleep(10)。假设10秒应该足以让服务器进程启动并准备接受请求。这绝对不是万无一失的。
答案 0 :(得分:0)
您可能想使用gearman。在这里,您可以将特定端口上的工作者绑定为服务器进程。并向gearman客户提出要求。
当齿轮工人假装守护进程时,一旦收到请求,就会立即响应:
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)
gearman客户:
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()