Heroku с использованием django и twisted

#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 > ) предотвращает сообщение о реальной ошибке.