現在、Python で SimpleXMLRPCServer モジュールを使用してアプリケーションを作成しています。
このアプリケーションの基本的な目的は、サーバー上で実行し続け、タスクのキューをチェックし続けることです。Queue で新しいリクエストが見つかった場合は、そのリクエストを処理します。
私がやろうとしていることのスナップショット:
クラス MyClass():
"""
This class will have methods which will be exposed to the clients
"""
def __init__(self):
taskQ = Queue.Queue()
def do_some_task(self):
while True:
logging.info("Checking the Queue for any Tasks..")
task = taskQ.get()
# Do some processing based on the availability of some task
主要
名前== "メイン" の場合:
server = SimpleXMLRPCServer.SimpleXMLRPCServer((socket.gethostname(), Port)
classObj = MyClass()
rpcserver.register_function(classObj.do_some_task)
rpcserver.serve_forever()
サーバーが開始されると、do_some_task メソッド内で永遠にループに残り、タスクのキューをチェックし続けます。これが私が達成したかったことです。しかし、今はサーバーを正常にシャットダウンしたいと考えています。この場合、サーバーをシャットダウンできません。
これまで、「True」のグローバル フラグ STOP_SERVER を使用し、do_some_task while ループでそのステータスをチェックして、ループから抜け出してサーバーを停止しようとしました。しかし、助けはありません。
SimpleXMLRPCServer の SHUTDOWN() メソッドを使用してみましたが、何らかの無限ループに陥っているようです。
サーバーを正常にシャットダウンする適切な方法を提案していただけますか。
前もって感謝します