Проблема, работающая twisted.words пример с помощью протокола MSN

Просто удалите из Dockerfile все, что не имеет ничего общего с вашим сценарием, и начните с чего-то простого, например,

FROM python:3

ADD my_script.py /

CMD [ "python", "./my_script.py" ]

. Вам не нужно, чтобы Docker составлял для контейнерирования одного сценария Python.

Пример взят из этого простого учебника о контейнеризации приложений Python: https://runnable.com/docker/python/dockerize-your-python-application

Вы можете легко перезапишите команду, указанную в файле Docker (через CMD), при запуске контейнера из образа. Просто добавьте нужную команду к вашей docker run команде, например:

docker run IMAGE /path/to/script.py

5
задан nosklo 25 April 2009 в 13:54
поделиться

2 ответа

Поскольку MSN использует SSL-соединения, необходимо установить pyOpenSSL для его использования. Кажется, что вы, вероятно, нет. Однако Twisted не очень хороший способ сообщить об этой отсутствующей зависимости. Я рекомендую подать заявку в трекер Twisted для улучшения этой отчетности.

3
ответ дан 14 December 2019 в 19:25
поделиться

Что случилось

Это исключение, которое вы получаете, когда вы пытаетесь вызвать объект None. Проверь это :

>>> a = str
>>> a() # it's ok, a string is a callable class
''
>>> a = None
>>> a() # it fails, None a special Singleton not meant to be called

Traceback (most recent call last):
  File "<pyshell#4>", line 1, in <module>
    a()
TypeError: 'NoneType' object is not callable

Что вы можете сделать

Вы не можете угадать это так, поэтому вам нужно сделать некоторую отладку.

Очевидно, что последняя строка (refactor.connectSSL ...) содержит три вызова объекта, и один из объектов - None.

Первое, что вы можете сделать, если вы не являетесь отладчиком, если взять каждый элемент строки и добавить непосредственно перед ним:

assert object1 is None 
assert object2 is None

Тогда у вас будет источник вашего исключения. После этого проверьте, почему для этого объекта установлено значение Нет. Вам, вероятно, придется проверить документ, чтобы увидеть, в каком случае какой-то метод, который мог его инициализировать, возвращает None.

Пусть сила ...

если вы не в отладчиках, если взять каждый элемент строки и добавить непосредственно перед ним:

assert object1 is None 
assert object2 is None

Тогда у вас будет источник вашего исключения. После этого проверьте, почему для этого объекта установлено значение Нет. Вам, вероятно, придется проверить документ, чтобы увидеть, в каком случае какой-то метод, который мог его инициализировать, возвращает None.

Пусть сила ...

если вы не в отладчиках, если взять каждый элемент строки и добавить непосредственно перед ним:

assert object1 is None 
assert object2 is None

Тогда у вас будет источник вашего исключения. После этого проверьте, почему для этого объекта установлено значение Нет. Вам, вероятно, придется проверить документ, чтобы увидеть, в каком случае какой-то метод, который мог его инициализировать, возвращает None.

Пусть сила ...

2
ответ дан 14 December 2019 в 19:25
поделиться
Другие вопросы по тегам:

Похожие вопросы: