Re: [flask] Start/Stop Flask
- From:
- eduardo
- Date:
- 2011-01-10 @ 14:55
Hi, thanks.
But...
I tried this:
import time
from multiprocessing import Process
from flask import Flask
app = Flask(__name__)
@app.route('/')
def index():
return "Hi there!!!"
if __name__ == '__main__':
app.debug = True
print "starting process"
server = Process(target=app.run)
server.start()
print "sleeping"
time.sleep(5)
print "ending process"
server.terminate()
server.join()
print "bye..."
ang got this:
>pythonw -u "app.py"
starting process
Traceback (most recent call last):
File "app.py", line 16, in <module>
server.start()
File "C:\Python27\lib\multiprocessing\process.py", line 104, in start
self._popen = Popen(self)
File "C:\Python27\lib\multiprocessing\forking.py", line 244, in __init__
dump(process_obj, to_child, HIGHEST_PROTOCOL)
File "C:\Python27\lib\multiprocessing\forking.py", line 167, in dump
ForkingPickler(file, protocol).dump(obj)
File "C:\Python27\lib\pickle.py", line 224, in dump
self.save(obj)
File "C:\Python27\lib\pickle.py", line 331, in save
self.save_reduce(obj=obj, *rv)
File "C:\Python27\lib\pickle.py", line 419, in save_reduce
save(state)
File "C:\Python27\lib\pickle.py", line 286, in save
f(self, obj) # Call unbound method with explicit self
File "C:\Python27\lib\pickle.py", line 649, in save_dict
self._batch_setitems(obj.iteritems())
File "C:\Python27\lib\pickle.py", line 681, in _batch_setitems
save(v)
File "C:\Python27\lib\pickle.py", line 286, in save
f(self, obj) # Call unbound method with explicit self
File "C:\Python27\lib\multiprocessing\forking.py", line 40, in dispatcher
self.save_reduce(obj=obj, *rv)
File "C:\Python27\lib\pickle.py", line 401, in save_reduce
save(args)
File "C:\Python27\lib\pickle.py", line 286, in save
f(self, obj) # Call unbound method with explicit self
File "C:\Python27\lib\pickle.py", line 548, in save_tuple
save(element)
File "C:\Python27\lib\pickle.py", line 331, in save
self.save_reduce(obj=obj, *rv)
File "C:\Python27\lib\pickle.py", line 419, in save_reduce
save(state)
File "C:\Python27\lib\pickle.py", line 286, in save
f(self, obj) # Call unbound method with explicit self
File "C:\Python27\lib\pickle.py", line 649, in save_dict
self._batch_setitems(obj.iteritems())
File "C:\Python27\lib\pickle.py", line 681, in _batch_setitems
save(v)
File "C:\Python27\lib\pickle.py", line 331, in save
self.save_reduce(obj=obj, *rv)
File "C:\Python27\lib\pickle.py", line 419, in save_reduce
save(state)
File "C:\Python27\lib\pickle.py", line 286, in save
f(self, obj) # Call unbound method with explicit self
File "C:\Python27\lib\pickle.py", line 649, in save_dict
self._batch_setitems(obj.iteritems())
File "C:\Python27\lib\pickle.py", line 681, in _batch_setitems
save(v)
File "C:\Python27\lib\pickle.py", line 286, in save
f(self, obj) # Call unbound method with explicit self
File "C:\Python27\lib\pickle.py", line 649, in save_dict
self._batch_setitems(obj.iteritems())
File "C:\Python27\lib\pickle.py", line 681, in _batch_setitems
save(v)
File "C:\Python27\lib\pickle.py", line 286, in save
f(self, obj) # Call unbound method with explicit self
File "C:\Python27\lib\pickle.py", line 748, in save_global
(obj, module, name))
pickle.PicklingError: Can't pickle <function <lambda> at 0x012904B0>:
it's not found as jinja2.defaults.<lambda>
>Exit code: 1
:(
regards,
eduardo
PS: English isn't my primray language so sorry for any mistake.
Em 10/1/2011 12:03, Simon Sapin escreveu:
> Le 10/01/2011 22:30, eduardo a écrit :
>> Hi.
>>
>> Is there a way of using Flasp as a thread?
>> I mean, doing things like:
>>
>> app = Flask(__name__)
>> ...
>> app.run()
>> ...
>> ...
>> app.stop()<= ????
> Hi,
>
> On Python 2.6+ I’d do something like this:
>
> server = multiprocessing.Process(target=app.run)
> server.start()
> # ...
> server.terminate()
> server.join()
>
> See
> http://docs.python.org/library/multiprocessing.html#multiprocessing.Process
>
> Regards,
Re: [flask] Start/Stop Flask
- From:
- Simon Sapin
- Date:
- 2011-01-10 @ 23:44
Le 10/01/2011 23:55, eduardo a écrit :
> pickle.PicklingError: Can't pickle<function<lambda> at 0x012904B0>:
> it's not found as jinja2.defaults.<lambda>
Instead of
if __name__ == '__main__':
server = Process(target=app.run)
Try:
def run():
app.run()
if __name__ == '__main__':
server = Process(target=run)
See http://docs.python.org/library/multiprocessing.html#windows
Regards,
--
Simon Sapin
Re: [flask] Start/Stop Flask
- From:
- eduardo
- Date:
- 2011-01-11 @ 02:36
It worked!
Thanks a lot.
best regards,
eduardo
Em 10/1/2011 21:44, Simon Sapin escreveu:
> Le 10/01/2011 23:55, eduardo a écrit :
>> pickle.PicklingError: Can't pickle<function<lambda> at 0x012904B0>:
>> it's not found as jinja2.defaults.<lambda>
> Instead of
>
> if __name__ == '__main__':
> server = Process(target=app.run)
>
>
> Try:
>
> def run():
> app.run()
>
> if __name__ == '__main__':
> server = Process(target=run)
>
> See http://docs.python.org/library/multiprocessing.html#windows
>
> Regards,