У меня длинный опыт программирования, но я новичок в Python и играю с Tornado, чтобы создать прототип определенной длинной службы опросов.
Чего я хочу добиться, так это того, чтобы пользователь подключался, чтобы сказать example.com/get/1234, что является длинной частью опроса. 1234 - это идентификатор пользователя. На данный момент он просто висит и ждет контента. Затем пользователь использует новую вкладку / другой браузер / другой компьютер / и т. Д. И переходит по URL-адресу, например example.com/set/1234?data=abcd, где 1234 - это идентификатор пользователя, а данные - это переменная с содержимым «abcd». Теперь, когда это происходит, первый запрос get должен распечатать данные «abcd» и завершить запрос. Идентификатор пользователя используется, очевидно, чтобы позволить нескольким пользователям использовать сервис одновременно. Проще говоря:
1) Перейти на example.com/get/1234 -> ожидание
2) В другой вкладке откройте example.com/set/1234?data=abcd
3) Сразу после этого запроса первый запрос печатает abcd и завершает
Ниже я попробую кое-что сделать, но я не продвигаюсь вперед и не могу найти подходящие ключевые слова Google для решения этой проблемы.
class GetHandler(tornado.web.RequestHandler):
@tornado.web.asynchronous
# Getting user ID is working
def get(self, user_id):
# This is something I'm not sure is right, but found it in an
# example. I haven't created the code_received function yet,
# nor know if it should be here? Should the code_received
# and connection finishing be called from the /set part?
cursor = self.get_argument("cursor", None)
self.wait_for_code(self.code_received, cursor=cursor)
def code_received(self, data)
self.write(data)
self.finish()
Вся помощь очень ценится. Заранее спасибо!