Есть твистед приложение и вот захотелось его помасштабировать на ядра процессора в результате родился такой код:
from twisted.internet import reactor;
from proxy import ProxyProtocolImpl;
import os;
reactor.listenUNIX("/tmp/twisted.sock", ProxyProtocolImpl());
for i in xrange(3):
l_pid = os.fork();
if(l_pid == 0):
break;
reactor.run()
Все вообщем то ничего только при shutdown приложения вывливаеться такая ошибка 3 раза:
Traceback (most recent call last):
File "/usr/local/lib/python2.6/site-packages/twisted/internet/defer.py",
line 249, in addCallbacks
self._runCallbacks()
File "/usr/local/lib/python2.6/site-packages/twisted/internet/defer.py",
line 441, in _runCallbacks
self.result = callback(self.result, *args, **kw)
File "/usr/local/lib/python2.6/site-packages/twisted/internet/base.py",
line 426, in _continueFiring
callable(*args, **kwargs)
File "/usr/local/lib/python2.6/site-packages/twisted/internet/base.py",
line 613, in disconnectAll
failure.Failure(main.CONNECTION_LOST))
--- <exception caught here> ---
File "/usr/local/lib/python2.6/site-packages/twisted/python/log.py", line
84, in callWithLogger
return callWithContext({"system": lp}, func, *args, **kw)
File "/usr/local/lib/python2.6/site-packages/twisted/python/log.py", line
69, in callWithContext
return context.call({ILogContext: newCtx}, func, *args, **kw)
File "/usr/local/lib/python2.6/site-packages/twisted/python/context.py",
line 59, in callWithContext
return self.currentContext().callWithContext(ctx, func, *args, **kw)
File "/usr/local/lib/python2.6/site-packages/twisted/python/context.py",
line 37, in callWithContext
return func(*args,**kw)
File "/usr/local/lib/python2.6/site-packages/twisted/internet/unix.py",
line 134, in connectionLost
os.unlink(self.port)
exceptions.OSError: [Errno 2] No such file or directory:
'/tmp//tmp/twisted.sock'
Вообщем то все понятно оставшиеся 3 процесса пытаються удалить файл сокета который уже удален породившим процессом.Задал я вопрос в комюнити твистеда на что мне ответили, что такое поведение не поддерживаеться, и дали вот такую ссылку:
http://twistedmatrix.com/trac/ticket/4387Но честно говоря там по моему не совсем то что мне нужно. И почему поведение с fork не поддерживаеться тоже не понятно.
Posted via RSDN NNTP Server 2.1 beta