The default Launcher stores self.processes as a dict in memory, so when Scrapyd restarts, it loses track of the processes. The processes are stored as ScrapyProcessProtocol instances.
A new Launcher could perhaps store these in a backend, that it loads at startup.
Scrapyd only needs to restart rarely (e.g. version upgrade, configuration change, or server restart). If #519 is done, then configuration changes won't be a concern here.