サーバー (Twisted を使用) とクライアント (Twisted なし) で構成される Python プログラムを作成しています。
サーバー部分は Twisted と Twisted のアプリケーション フレームワークを使用して実装され、Twistd で起動されてデーモン化されます。
別のサーバーで実行されるクライアントは、Twisted のものを一切含まない (そしてアプリケーション フレームワーク固有のものを含まない) 単純な Python スクリプトです。また、デーモンとして実行する必要があります。参考までに、これはソースです:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import socket
import sys
import time
import syslog
SERVER_IP = '127.0.0.1'
SERVER_PORT = 43278
BEAT_PERIOD = 1
class HeartbeatClient:
'''
A Client sending heartbeats to a monitoring server.
'''
def __init__(self, server_ip, port, beat_period):
syslog.syslog( ('Sending heartbeat to IP %s , port %d' +
'\n press Ctrl-C to stop\n')
% (SERVER_IP, SERVER_PORT))
def run(self):
while True:
hbSocket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
hbSocket.sendto('PyHB', (SERVER_IP, SERVER_PORT))
if __debug__:
print 'Time: %s' % time.ctime()
time.sleep(BEAT_PERIOD)
if __name__ == '__main__':
hbc = HeartbeatClient()
hbc.run()
Twistd でもクライアントをデーモン化できるのでしょうか? したがって、クライアントから Twisted-Application を作成する必要がありました。しかし、私が見たすべての例は、クライアントが使用していない Twisted インターネットサーバーのもの (私の場合は internet.UDPServer...) を実装する Twisted アプリケーションに関するものです。
Twistd を使用してクライアントをデーモンとして起動することは可能ですか? また、どのような変更を加える必要がありますか? Twisted をフルに活用するには、クライアントを書き直す必要がありますか? はいの場合、Twisted ベースのネットワーク クライアントを作成する方法と同様の例はありますか?
または、クライアントに別のデーモン化ライブラリを使用する必要がありますか? そのための優れたライブラリがありますが、一貫性を保ち、クライアントとサーバーに同じデーモン化メカニズムを使用しようとしています。