giampaolo / pyftpdlib

Extremely fast and scalable Python FTP server library
MIT License
1.68k stars 263 forks source link

Avoid the multiprocessing forkserver method #656

Closed hroncok closed 20 hours ago

hroncok commented 1 day ago

Python 3.14 changed the default multiprocessing method for POSIX (sans macOS) from fork to forkserver. This causes errors like:

TypeError: cannot pickle 'select.epoll' object
when serializing dict item '_poller'
when serializing pyftpdlib.ioloop.Epoll state
when serializing pyftpdlib.ioloop.Epoll object
when serializing dict item 'ioloop'
when serializing pyftpdlib.servers.MultiprocessFTPServer state
when serializing pyftpdlib.servers.MultiprocessFTPServer object
when serializing tuple item 0
when serializing method reconstructor arguments
when serializing method object
when serializing dict item '_target'
when serializing multiprocessing.context.Process state
when serializing multiprocessing.context.Process object

See https://github.com/python/cpython/issues/125714

giampaolo commented 20 hours ago

thank you!