#python #django #heroku #websocket #twisted
#python #django #heroku #websocket #twisted
Вопрос:
Я хочу поместить свое рабочее приложение на Heroku. Приложение, использующее Django и чат на основе Twisted websockets. Я не знаю, что это хороший подход, но я установил twisted через heroku bash, но когда я хочу запустить свой chatserver.py У меня есть исключение, потому что для какого-то скрученного модуля требуется OpenSSL, который не установлен в моем env.
Итак, простой вопрос: как установить Twisted для работы с websocket на Heroku?
Обновление при запуске twistd -n -y chatserver.py:
Unhandled Error
Traceback (most recent call last):
File "/app/.heroku/python/lib/python2.7/site-packages/Twisted-13.1.0-py2.7-linux-x86_64.egg/twisted/application/app.py", line 652, in run
runApp(config)
File "/app/.heroku/python/lib/python2.7/site-packages/Twisted-13.1.0-py2.7-linux-x86_64.egg/twisted/scripts/twistd.py", line 23, in runApp
_SomeApplicationRunner(config).run()
File "/app/.heroku/python/lib/python2.7/site-packages/Twisted-13.1.0-py2.7-linux-x86_64.egg/twisted/application/app.py", line 386, in run
self.application = self.createOrGetApplication()
File "/app/.heroku/python/lib/python2.7/site-packages/Twisted-13.1.0-py2.7-linux-x86_64.egg/twisted/application/app.py", line 451, in createOrGetApplication
application = getApplication(self.config, passphrase)
--- <exception caught here> ---
File "/app/.heroku/python/lib/python2.7/site-packages/Twisted-13.1.0-py2.7-linux-x86_64.egg/twisted/application/app.py", line 462, in getApplication
application = service.loadApplication(filename, style, passphrase)
File "/app/.heroku/python/lib/python2.7/site-packages/Twisted-13.1.0-py2.7-linux-x86_64.egg/twisted/application/service.py", line 405, in loadApplication
application = sob.loadValueFromFile(filename, 'application', passphrase)
File "/app/.heroku/python/lib/python2.7/site-packages/Twisted-13.1.0-py2.7-linux-x86_64.egg/twisted/persisted/sob.py", line 210, in loadValueFromFile
exec fileObj in d, d
File "chatserver.py", line 37, in <module>
from twisted.web.websockets import WebSocketsResource, lookupProtocolForFactory
File "/app/.heroku/python/lib/python2.7/site-packages/Twisted-13.1.0-py2.7-linux-x86_64.egg/twisted/web/websockets.py", line 28, in <module>
from twisted.protocols.tls import TLSMemoryBIOProtocol
File "/app/.heroku/python/lib/python2.7/site-packages/Twisted-13.1.0-py2.7-linux-x86_64.egg/twisted/protocols/tls.py", line 40, in <module>
from OpenSSL.SSL import Error, ZeroReturnError, WantReadError
exceptions.ImportError: No module named OpenSSL.SSL
Failed to load application: No module named OpenSSL.SSL
Поэтому, когда я пытаюсь установить openssl с помощью команды: pip install pyopenssl
Traceback (most recent call last):
File "<string>", line 17, in <module>
File "/tmp/pip_build_u12732/cryptography/setup.py", line 174, in <module>
"test": PyTest,
File "/app/.heroku/python/lib/python2.7/distutils/core.py", line 111, in setup
_setup_distribution = dist = klass(attrs)
File "build/bdist.linux-x86_64/egg/setuptools/dist.py", line 260, in __init__
File "build/bdist.linux-x86_64/egg/setuptools/dist.py", line 285, in fetch_build_eggs
File "build/bdist.linux-x86_64/egg/pkg_resources.py", line 631, in resolve
File "build/bdist.linux-x86_64/egg/pkg_resources.py", line 871, in best_match
File "build/bdist.linux-x86_64/egg/pkg_resources.py", line 883, in obtain
File "build/bdist.linux-x86_64/egg/setuptools/dist.py", line 335, in fetch_build_egg
File "build/bdist.linux-x86_64/egg/setuptools/command/easy_install.py", line 595, in easy_install
File "build/bdist.linux-x86_64/egg/setuptools/command/easy_install.py", line 625, in install_item
File "build/bdist.linux-x86_64/egg/setuptools/command/easy_install.py", line 822, in install_eggs
File "build/bdist.linux-x86_64/egg/setuptools/command/easy_install.py", line 1028, in build_and_install
File "build/bdist.linux-x86_64/egg/setuptools/command/easy_install.py", line 1016, in run_setup
distutils.errors.DistutilsError: Setup script exited with error: command 'gcc' failed with exit status 1
----------------------------------------
Cleaning up...
Command python setup.py egg_info failed with error code 1 in /tmp/pip_build_u12732/cryptography
Traceback (most recent call last):
File "/app/.heroku/python/bin/pip", line 9, in <module>
load_entry_point('pip==1.5.6', 'console_scripts', 'pip')()
File "/app/.heroku/python/lib/python2.7/site-packages/pip-1.5.6-py2.7.egg/pip/__init__.py", line 185, in main
return command.main(cmd_args)
File "/app/.heroku/python/lib/python2.7/site-packages/pip-1.5.6-py2.7.egg/pip/basecommand.py", line 161, in main
text = 'n'.join(complete_log)
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe2 in position 75: ordinal not in range(128)
Комментарии:
1. Вы пытались установить pyOpenSSL?
2. Да, при установке OpenSSL из heroku bash возникают некоторые ошибки
3. Либо вам нужно преодолеть эти ошибки, либо найти способ запустить ваше приложение без поддержки TLS. Я не думаю, что здесь достаточно информации, чтобы кто-нибудь мог предоставить вам конкретный полезный ответ.
4. @Jean-PaulCalderone Я обновил свой вопрос
5. К сожалению, это похоже на ошибку pip (< » rel=»nofollow noreferrer»> github.com/pypa/pip/issues/1501 > ) предотвращает сообщение о реальной ошибке.