Форматирование структуры данных в разделенный запятыми список аргументов

Ваш docker-compose.yml правильный, и URL, который вы используете, также правильный. Я думаю, что проблема в том, что mongo требуется больше времени для запуска, чем к YourWebApi, и вы просто пытаетесь подключиться к базе данных, пока она еще не готова.

Поле depends_on контролирует только стартовый порядок, но не дает гарантии того, что услуги готовы.

Итак, попробуйте добавить некоторое время ожидания в ваше приложение. Если это работает, просто введите метод wait-for - ожидание открытия удаленного сокета. Это стандартный способ решения вашей проблемы.

6
задан Dan 8 December 2008 в 11:00
поделиться

4 ответа

'function(%s)' % ', '.join(args)

производит

'function(a, b, c, d)'
11
ответ дан 8 December 2019 в 04:56
поделиться
result = 'function (%s)' % ', '.join(map(str,args))

Я рекомендую карту (ул., args) вместо просто args, потому что некоторые Ваши аргументы не могли потенциально быть строками и вызовут TypeError, например, с международным аргументом в Вашем списке:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: sequence item 0: expected string, int found

При вхождении в объекты dict, Вы, вероятно, захотите к отдельному от запятой значения dict (по-видимому, потому что значения - то, что Вы хотите передать в эту функцию). Если Вы сделаете метод соединения на самом объекте dict, то Вы разделите ключи, как так:

>>> d = {'d':5, 'f':6.0, 'r':"BOB"}
>>> ','.join(d)
'r,d,f'

То, что Вы хотите, следующее:

>>> d = {'d':5, 'f':6.0, 'r':"BOB"}
>>> result = 'function (%s)' % ', '.join(map(str, d.values()))
>>> result
'function (BOB, 5, 6.0)'

Отметьте новую проблему, с которой Вы встречаетесь, как бы то ни было. При передаче аргумента строки через функцию соединения это теряет свое заключение в кавычки. Таким образом, если бы Вы запланировали передать строки через, Вы потеряли кавычки, которые обычно окружали бы строку при передаче в функцию (строки заключаются в кавычки на многих языках общего назначения). Если Вы только передаете числа, однако, это не проблема для Вас.

Существует, вероятно, более хороший способ решить проблему, которую я просто описал, но здесь являюсь одним методом, который мог работать на Вас.

>>> l = list()
>>> for val in d.values():
...   try:
...     v = float(val) #half-decent way of checking if something is an int, float, boolean
...     l.append(val) #if it was, then append the original type to the list
...   except:
...     #wasn't a number, assume it's a string and surround with quotes
...     l.append("\"" + val + "\"")
...
>>> result = 'function (%s)' % ', '.join(map(str, l))
>>> result
'function ("BOB", 5, 6.0)'

Теперь строка имеет кавычки, окружающие себя. При передаче более составных типов, чем числовые примитивы и строки затем, Вам, вероятно, нужен новый вопрос :)

Одно последнее примечание: Я использовал d.values (), чтобы показать, как извлечь значения из словаря, но на самом деле который возвратит значения из словаря в в значительной степени произвольном порядке. Так как Ваша функция, скорее всего, требует аргументов в особом порядке, необходимо вручную создать список значений вместо того, чтобы назвать d.values ().

1
ответ дан 8 December 2019 в 04:56
поделиться

', '.join(args) добьется цели.

12
ответ дан 8 December 2019 в 04:56
поделиться

Почему бы не использовать стандарт, который оба языка могут проанализировать, как JSON, XML или YAML? simplejson удобен, и включенный как json в python 2.6.

0
ответ дан 8 December 2019 в 04:56
поделиться
Другие вопросы по тегам:

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