How to yield a list to stream values to flask?
I have this list which is dynamically generated by querying the database, but for the purposes of this question, I use a static list for demonstration.
I want to stream values to a web page so I thought a generator is best to use. Below is my python code:
list111 = [1,2,3,4,5]
for i in list111:
def events():
print(i)
yield "data: %snn" % (i)
return Response(events(), content_type='text/event-stream')`
I am expecting this script to print 1 to 5 but instead it keeps on printing 1. Is it the wrong way to yield a list?
This is what I am using on the client side (for reference purposes):
if (!!window.EventSource) {
var source = new EventSource('/upload');
console.log(source)
source.onmessage = function(e) {
console.log(e)
var byte = e.data;
console.log(e.data)
}
}
python python-3.x
add a comment |
I have this list which is dynamically generated by querying the database, but for the purposes of this question, I use a static list for demonstration.
I want to stream values to a web page so I thought a generator is best to use. Below is my python code:
list111 = [1,2,3,4,5]
for i in list111:
def events():
print(i)
yield "data: %snn" % (i)
return Response(events(), content_type='text/event-stream')`
I am expecting this script to print 1 to 5 but instead it keeps on printing 1. Is it the wrong way to yield a list?
This is what I am using on the client side (for reference purposes):
if (!!window.EventSource) {
var source = new EventSource('/upload');
console.log(source)
source.onmessage = function(e) {
console.log(e)
var byte = e.data;
console.log(e.data)
}
}
python python-3.x
You return in the first iteration of the loop, so it only returns theevents
generator yielding a single "data: 1nn".
– L3viathan
Nov 15 '18 at 9:48
should I add return inside events
– Duck_dragon
Nov 15 '18 at 9:54
You want to return a generator yielding several strings? Put the loop insideevents
– L3viathan
Nov 15 '18 at 9:59
@L3viathan thanks got it.
– Duck_dragon
Nov 15 '18 at 10:04
add a comment |
I have this list which is dynamically generated by querying the database, but for the purposes of this question, I use a static list for demonstration.
I want to stream values to a web page so I thought a generator is best to use. Below is my python code:
list111 = [1,2,3,4,5]
for i in list111:
def events():
print(i)
yield "data: %snn" % (i)
return Response(events(), content_type='text/event-stream')`
I am expecting this script to print 1 to 5 but instead it keeps on printing 1. Is it the wrong way to yield a list?
This is what I am using on the client side (for reference purposes):
if (!!window.EventSource) {
var source = new EventSource('/upload');
console.log(source)
source.onmessage = function(e) {
console.log(e)
var byte = e.data;
console.log(e.data)
}
}
python python-3.x
I have this list which is dynamically generated by querying the database, but for the purposes of this question, I use a static list for demonstration.
I want to stream values to a web page so I thought a generator is best to use. Below is my python code:
list111 = [1,2,3,4,5]
for i in list111:
def events():
print(i)
yield "data: %snn" % (i)
return Response(events(), content_type='text/event-stream')`
I am expecting this script to print 1 to 5 but instead it keeps on printing 1. Is it the wrong way to yield a list?
This is what I am using on the client side (for reference purposes):
if (!!window.EventSource) {
var source = new EventSource('/upload');
console.log(source)
source.onmessage = function(e) {
console.log(e)
var byte = e.data;
console.log(e.data)
}
}
python python-3.x
python python-3.x
edited Nov 15 '18 at 10:17
martineau
68.5k1090183
68.5k1090183
asked Nov 15 '18 at 9:41
Duck_dragonDuck_dragon
628
628
You return in the first iteration of the loop, so it only returns theevents
generator yielding a single "data: 1nn".
– L3viathan
Nov 15 '18 at 9:48
should I add return inside events
– Duck_dragon
Nov 15 '18 at 9:54
You want to return a generator yielding several strings? Put the loop insideevents
– L3viathan
Nov 15 '18 at 9:59
@L3viathan thanks got it.
– Duck_dragon
Nov 15 '18 at 10:04
add a comment |
You return in the first iteration of the loop, so it only returns theevents
generator yielding a single "data: 1nn".
– L3viathan
Nov 15 '18 at 9:48
should I add return inside events
– Duck_dragon
Nov 15 '18 at 9:54
You want to return a generator yielding several strings? Put the loop insideevents
– L3viathan
Nov 15 '18 at 9:59
@L3viathan thanks got it.
– Duck_dragon
Nov 15 '18 at 10:04
You return in the first iteration of the loop, so it only returns the
events
generator yielding a single "data: 1nn".– L3viathan
Nov 15 '18 at 9:48
You return in the first iteration of the loop, so it only returns the
events
generator yielding a single "data: 1nn".– L3viathan
Nov 15 '18 at 9:48
should I add return inside events
– Duck_dragon
Nov 15 '18 at 9:54
should I add return inside events
– Duck_dragon
Nov 15 '18 at 9:54
You want to return a generator yielding several strings? Put the loop inside
events
– L3viathan
Nov 15 '18 at 9:59
You want to return a generator yielding several strings? Put the loop inside
events
– L3viathan
Nov 15 '18 at 9:59
@L3viathan thanks got it.
– Duck_dragon
Nov 15 '18 at 10:04
@L3viathan thanks got it.
– Duck_dragon
Nov 15 '18 at 10:04
add a comment |
1 Answer
1
active
oldest
votes
I got it as @L3viathan pointed out I am returning after the first iteration only. What I need to return was the for loop inside my event function.
list111 = [1,2,3,4,5]
def events():
for i in list111:
print(i)
yield "data: %snn" % (i)
return Response(events(), content_type='text/event-stream')`
add a comment |
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53316455%2fhow-to-yield-a-list-to-stream-values-to-flask%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
I got it as @L3viathan pointed out I am returning after the first iteration only. What I need to return was the for loop inside my event function.
list111 = [1,2,3,4,5]
def events():
for i in list111:
print(i)
yield "data: %snn" % (i)
return Response(events(), content_type='text/event-stream')`
add a comment |
I got it as @L3viathan pointed out I am returning after the first iteration only. What I need to return was the for loop inside my event function.
list111 = [1,2,3,4,5]
def events():
for i in list111:
print(i)
yield "data: %snn" % (i)
return Response(events(), content_type='text/event-stream')`
add a comment |
I got it as @L3viathan pointed out I am returning after the first iteration only. What I need to return was the for loop inside my event function.
list111 = [1,2,3,4,5]
def events():
for i in list111:
print(i)
yield "data: %snn" % (i)
return Response(events(), content_type='text/event-stream')`
I got it as @L3viathan pointed out I am returning after the first iteration only. What I need to return was the for loop inside my event function.
list111 = [1,2,3,4,5]
def events():
for i in list111:
print(i)
yield "data: %snn" % (i)
return Response(events(), content_type='text/event-stream')`
answered Nov 15 '18 at 10:04
Duck_dragonDuck_dragon
628
628
add a comment |
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53316455%2fhow-to-yield-a-list-to-stream-values-to-flask%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
You return in the first iteration of the loop, so it only returns the
events
generator yielding a single "data: 1nn".– L3viathan
Nov 15 '18 at 9:48
should I add return inside events
– Duck_dragon
Nov 15 '18 at 9:54
You want to return a generator yielding several strings? Put the loop inside
events
– L3viathan
Nov 15 '18 at 9:59
@L3viathan thanks got it.
– Duck_dragon
Nov 15 '18 at 10:04