我有點困惑它如何實現。許多應用程序提供了用戶在其中啓動某些操作而無需重新啓動應用程序的功能。更清楚的是「/etc/init.d/apache2 reload」將強制Apache進程重新加載其配置文件而不重新啓動。我將如何去爲我的Python應用程序實現相同的方法?如何讓進程在Python中的用戶請求中執行一些操作?
回答
你可以通過定義一個方法,這樣做重置在Python應用程序:
if __name__ == "__main__":
answer = raw_input("Do you want to restart this program ? ")
if answer == "yes":
restart_program()
此代碼是從here採取:
import sys
import os
def restart_program():
python = sys.executable
os.execl(python, python, * sys.argv)
然後讓用戶根據要求啓動該代碼。 Apache會根據命令進行重置,因爲程序被編寫爲接受這樣的命令,因爲python是您創建程序的語言,您需要實現此功能。
如果你只想重置某些變量,那麼你可以這樣做:
def reset_var():
global var1
global var2
var1 = 0
var2 = 0
刷新文件:
file = open('words.txt', 'r')
def reloadfile():
file.close()
file = open('words.txt', 'r')
這將實際重新啓動程序。也許有一些重要的計算正在進行,或者有人通過套接字服務器連接到應用程序,當然我們不想在半空中打破所有進程。 – user3352528
然後定義一個方法來做到這一點:'def reset_var():global var1;全球變量2; var1 = 0; var2 = 0' – advert2013
的/etc/init.d/目錄目錄包含了一系列的管理服務的腳本。您可以在此目錄中創建一個新腳本,以允許您啓動/停止/重新啓動您編寫的任何程序。啓動和停止的命令進入這個目錄,而不是進入你的程序。例如,要停止服務,這些腳本中的很多腳本都會調用'kill'或'killall'命令。
這裏有一些鏈接,描述了目錄,以及如何創建自己的腳本吧:
http://www.ghacks.net/2009/04/04/get-to-know-linux-the-etcinitd-directory/ http://www.tldp.org/HOWTO/HighQuality-Apps-HOWTO/boot.html
- 1. 如何在ajax請求發送時執行一些操作?
- 2. 如何在Unity3d中運行進程時執行某些操作
- 3. 如何在用戶取消請求後執行操作
- 4. 如何在Python中進行API請求
- 5. 如何在Python中執行非操作?
- 6. 噴霧如何在請求完成之後執行一些操作
- 7. python:我如何讓烏龜從列表中執行某些操作?
- 8. 如何讓表單中的提交按鈕在執行表單操作之前執行某些操作
- 9. (Python)的操縱URL的某些部分在用戶的請求
- 10. cherrypy,在每個請求之前自動執行某些操作
- 11. 如何在python子進程完成後執行post操作
- 12. 在AFNetworking的同一線程中執行某些操作
- 13. 異步請求用戶執行操作的最佳方法?
- 14. 如果進程正在運行,請執行此操作,否則請執行此操作
- 15. 如何在javafx中選擇Tab時執行一些操作?
- 16. 如何使用python執行此請求
- 17. 如何讓CheckBox在檢查時執行某些操作?
- 18. 如果用戶在odoo中執行一些操作,如何在管理員帳戶中顯示消息
- 19. 使用Python pool.map讓多個進程在列表上執行操作
- 20. 在Django中創建用戶時執行某些操作
- 21. 在Python中執行獲取請求
- 22. Nodejs讀取某些進程的stdout並執行某些操作
- 23. 讓一個應用程序在某段時間後執行某些操作
- 24. 如何在Python中對一組數組執行操作?
- 25. 如何使用f:viewParam對GET請求執行操作?
- 26. 如何在另一個進程中運行一些Python代碼?
- 27. 如何在請求用戶輸入後繼續執行程序?
- 28. Python子進程:如何在python中執行進程的子進程?
- 29. 如何在mysql中執行tarantool請求?
- 30. 如何在MongoJS中執行DELETE請求?
這是一個廣泛的問題。在一個功能中重新加載進程中的配置。提供一種從外部控制流程行爲的機制是另一回事。你想着重於哪裏? – pajton
@pajton,我在尋找更多的概念答案。 F.E.我對實現這個目標的方法之一的猜測是實際啓動新進程,從中找到原始進程,通過kill -USR1 $ PID發送信號並等待輸出。但後來我被限制的信號數量卡住了。另一方面,我不確定這是如何實現的,這就是爲什麼我要求社區瞭解他們的知識。 – user3352528