-
Notifications
You must be signed in to change notification settings - Fork 26
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Large Architecture overhaul. #26
base: master
Are you sure you want to change the base?
Conversation
…ces readability for arbitrary reason. I fixed all the length issues to bring the code in line to the repo, however due to a long line in ./server/initialize.py:570 i still had to add E501 to the tox ignore list.
Thanks for the contribution! This is great stuff, so thanks for sharing it. I unfortunately do not have time to review the entire PR in detail right now, but I do see some initial issues that I would like to see addressed before it is merged:
Thanks! |
Yeah, no need to rush through the review - i know a lot changed :)
You can also run this without nginx by invoking the server directly. I actually do this for debugging during dev, and make sure that invoking the server without nginx still starts up correctly. When making the changes to the guided install, if someone answers no to nginx/redis, would you expect a systemd unit file to be created to run the debug server on boot, or let the user handle their own startup file? I wouldn't recommend running this in production on the debug server.
I do see a potential problem where running as root could lead to files being created in var with root:root ownership, which could then break the install when running as non root. re-running the ./server-setup.sh and pressing y on the fix permissions option will fix that. besides that, i dont think theres a graceful way to start as root in order to bind to 80, then drop down to the service account that doesnt involve significant effort to implement
|
Yes, I agree that it's reasonable to only allow for one worker if redis isn't being used.
Yes, if not using nginx I would expect the current behavior of creating a systemd file to be offered. We had no trouble at Quantopian running it in production using the debug server. It really depends on how many clients you're supporting. Nginx, redis, and multiple workers are overkill for a small installation, which is why they should be optional.
It is not clear to me what problem you're anticipating here that makes this a difficult problem.
E501 isn't enforced on multi-line strings, so if that's the only problem then it's not clear to me why you added E501 to the exclude list in the first place. |
I created this fork a while back and din't think the project was active... I saw all the new changes and it looks like we both fixed the pgp keychain issue. I also fixed the issue, which i included in the PR since it was less work to merge back up to master than the other way around. Let me know if theres any issues there. The way i write it you explicitly set which keychain to use in server.py / client.py
One other change that had to be made was that by having multiple server workers (multiple threads or multiple instances), there was an issue with encryptors being used during the client shell. So some work had to be done to move where the encryptor was created in order to store it in redis. Since the encryptor is only used to validate the data and transit security is being provided by tls/ssl to the server